What it does
Inventory true-up reconciles an external device inventory against the sessions you already have saved in TermZ. You produce the inventory file with your own tooling — an export from whatever you treat as your source of truth, such as an IPAM/DCIM (NetBox, Infoblox), an NMS (SolarWinds, Zabbix, LibreNMS), a CMDB, or even a spreadsheet — and the plugin diffs it against your saved sessions, grouping every record as new, changed, or missing. You review the diff and apply only the changes you want.
File format
The file is either CSV or JSON, with one record per device. The fields are the same either way.
| Field | Required | Meaning |
|---|---|---|
name | Yes | Unique session name. This is the join key. |
host | No | IP address or hostname. |
port | No | Port number. |
username | No | Login user. |
kind | No | ssh · telnet · raw · serial · local (default ssh). |
folder_path | No | POSIX-style path, e.g. /DC1/Core. |
equipment_type | No | Equipment type label. |
tags | No | JSON: array of strings. CSV: ;-separated. |
notes | No | Free text. |
external_id | No | The source system's stable device id (e.g. a NetBox/NMS/CMDB record id, serial number, or asset tag). |
CSV
The first row is the header using the column names above (case-insensitive; extra columns are ignored).
name,host,port,username,kind,external_id
core01,10.30.1.5,22,admin,ssh,netbox:1204
edge-07,10.30.2.9,22,admin,ssh,netbox:1187
JSON
An array of objects, or a { "sessions": [...] } envelope:
[
{ "name": "core01", "host": "10.30.1.5", "port": 22, "username": "admin", "external_id": "netbox:1204" }
]
How matching works
- Records are joined to saved sessions by
name— your session names are unique, so the name is the join key. - The fields compared are
host,port,username, andkind. A device whose IP changed but kept its name shows as Changed. external_idis optional. When present, the plugin learnsexternal_id → sessionon a confirmed match (kept in the plugin's own storage), so a later rename still matches by id. Nothing needs to be staged ahead of time, and omittingexternal_idbreaks nothing.
The Missing bucket — sessions absent from the file — is only shown when you tick “This file is a complete export.” A partial pull must never read as a mass decommission.
Permissions it uses
Like every TermZ plugin, Inventory true-up runs sandboxed and can only do what you grant it. It requests:
- List sessions — read your saved session list (names, hosts, ports, usernames, folders) to build the diff. It never sees your passwords.
- Modify sessions — add and update saved sessions when you apply changes. It never touches stored passwords or other vault secrets.
- Read / write its storage — the plugin's own private data (such as the learned
external_id → sessionmap), isolated from other plugins and from your vault.
Back to all plugins · Plugins in the docs.