Skip to main content

terminaltelemetry2

An SSH terminal with live telemetry beside it, one device per window. Log in the way you normally would, and the panels next to the terminal keep polling the device: interfaces, BGP, OSPF, LLDP, CPU and memory, top processes, IP addresses, and on Linux hosts, containers, filesystems and failed systemd units. The panels are plain YAML, so you can change them or write your own.

Device window: terminal with live telemetry panels

Arista EOS, Cisco IOS, Cisco NX-OS, Juniper Junos and Linux ship with full widget coverage. There are platform packs for about 40 other vendors, most of which provide only the terminal session so far. You can bind widgets to those yourself; see Adding a platform.

Install

pip install terminaltelemetry2        # once published

From source:

git clone https://github.com/scottpeterman/terminaltelemetry2
cd terminaltelemetry2
python -m venv .venv && . .venv/bin/activate
pip install -e .

For the full interactive terminal (cursor addressing, htop, vi), add anytermqt. It isn't on PyPI yet:

pip install -e ".[terminal]" \
  --find-links https://github.com/scottpeterman/anytermqt/releases/expanded_assets/v0.1.0

Without it you get a basic terminal. The telemetry panels work either way.

Quick start

tt2

This opens the Connect form. Fill in host, platform, user, and a password or key; a jump host is optional. The form remembers your last connection, and the Host box lists recent hosts. Passwords and passphrases are never saved.

Connect form

Or connect directly:

tt2 --host 10.0.0.1 --user admin --platform eos
tt2 --host 10.0.0.1 --user admin --platform junos -i ~/.ssh/id_ed25519
tt2 --host 10.0.0.1 --user admin --platform eos -J admin@bastion1:22

Platform short names are eos, ios, nxos, junos and linux. The password comes from --password, then $TERMINALTELEMETRY2_PASSWORD, then a prompt.

From a session file

tt2 --sessions ~/sessions.yaml

This opens a searchable device picker over the same folder/sessions YAML used by the other terminal apps. Type to filter, press Down to reach the list, and press Enter to connect. Per-device jump_host, jump_port and jump_username entries override the default jump host.

Other useful flags

Flag Use
--enable-command 'enable' IOS devices that log you in at user mode
--legacy-ssh Old gear that needs legacy ciphers/KEX
--layout NAME Pick a different panel layout
--emulate [ip_lookup.json] Run against NetEmulate mock devices (demos, offline)
--debug Verbose logging

Using it

Key Action
F5 Refresh every panel now
Ctrl+N Open another device in a new window
Ctrl/Cmd + / - / 0 Terminal font size (remembered)
Ctrl+T Template Manager
Ctrl+Shift+W Widget Designer
Ctrl+Shift+P Platform Pack editor

Traffic monitor. Right-click an interface row in Interface Up/Down, Ports, LLDP, or a counters table, then choose Monitor <intf>. The interface opens in a Traffic window with a live bps rate and a 5-minute chart. Rates come from octet counters, so they're comparable across vendors and update every poll (5 s by default, adjustable from 2 to 60 s).

When a panel shows an error. Every panel has a { } button, which turns red when the last parse failed. Click it to open the template lab, loaded with the exact output the device returned and the template that failed on it. Edit the template until Test parses, then choose Save to database. The fix is saved as a new sibling template, so the original keeps working on the gear it already handled. docs/WIDGETS.md walks through this.

Customizing

Your own widgets, layouts, templates and platform packs go in ~/.terminaltelemetry2/. You can change that location with $TERMINALTELEMETRY2_HOME. A file there with the same name as a bundled one replaces the bundled version. The installed package is never modified.

widgets/*.yaml         your widgets
layouts/*.yaml         your layouts
platforms/*.yaml       your platform packs
templates/*.textfsm    template overrides
tfsm_templates.db      your copy of the template DB (created on first run)

Build a widget. Run tt2 --designer, pick a template and a sample output, and it proposes the whole widget: fields, view, columns and alerts, with a live preview. Save it and it's available in every window.

Widget Designer: MikroTik system resource

Widget Designer: Cisco AP summary table

Adding a platform. Run tt2 --packs PLATFORM. For each widget, the Pack editor suggests templates from the DB and previews the result. Accept confident suggestions binds everything it's sure of. New windows pick up the pack immediately.

Pack editor: Cisco IOS OSPF neighbors bound and previewed

More pack editor screens

Pack editor: HP ProCurve LLDP

Pack editor: Huawei VRP interface up/down

Running widgets with sudo (Linux). The Docker and FRR/vtysh widgets usually need root. Add a small user pack:

# ~/.terminaltelemetry2/platforms/linux-sudo.yaml
platform: linux
merge: true
bindings:
  containers: {sudo: true}
  bgp_peers:  {sudo: true}
  bgp_down:   {sudo: true}

Then add a NOPASSWD rule on the host, for example netops ALL=(root) NOPASSWD: /usr/bin/docker, /usr/bin/vtysh. Without the rule the widget fails immediately with a clear message; it never hangs on a prompt.

tt2 --check-platforms validates every pack and reports coverage.

More

License

GPL-3.0-or-later. Third-party components are listed in THIRD_PARTY_NOTICES.md.

Metadata

Release files for terminaltelemetry2 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for terminaltelemetry2 0.1.2
File Interpreter ABI Platform
terminaltelemetry2-0.1.2-py3-none-any.whl Python 3 none any Details

Release files / terminaltelemetry2-0.1.2-py3-none-any.whl

Download URL terminaltelemetry2-0.1.2-py3-none-any.whl
Size 930.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fa87e768b6c4f7d9fd3517f1a67f575b6d7d80ea1dfbb324d147bf96e8efe3fb
BLAKE2b-256 checksum
How to use checksums
1fb937ce3d72cc870822067c26bf50e6710d59762656d673c7f2e3f05cb990b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

0.1.2 This release

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page