- read netssh.yaml from the user config directory only, not from the
working directory
- refuse addresses from NetBox or the cache that are neither an IP
address nor a hostname (ssh read "-oProxyCommand=…" as an option)
- resolver chain stops at an API failure; only "no address" falls
through to the next strategy
- netssh --help and -h show netssh's help
- start at most one background cache refresh per 5 minutes
- validate the legacy netbox.url
- page through all IP addresses of a host
- CI: run format check, vet, and tests on pull requests and main
- changelog for v0.0.25
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Found by the new Docker test environment against a real NetBox 4.7:
- The interface_name strategy filtered IP addresses with interface_name
and vminterface_name, which NetBox ignores, so it returned the first
address of the host instead of the named interface's. Use the real
filters interface and vminterface; a missing interface (HTTP 400)
falls through to the next strategy.
- sftp and scp took instance-qualified hosts (prod/web01:/path) for
local paths, because a "/" comes before the ":". Such arguments are
remote when the prefix is a configured NetBox instance.
- Shell aliases of instance-qualified hosts ran the shortcut rules on
"instance/host", so anchored rewrite rules never matched.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add the hostname resolver strategy. It connects by the NetBox name
instead of an IP, with resolver.hostname_domain appended to names
without a dot. Its position in the chain decides whether it is always
used or only as a fallback (e.g. [primary_ip, hostname]); names that
are not valid DNS hostnames fall through to the next strategy.
Add static hosts under hosts: for machines that are not in NetBox,
with address, user, port, tags, and their own SSH options. They are
checked before NetBox (by name or shortcut), never expire, survive
cache refresh and clear, and work without any NetBox configured. The
cache overlays them after every load and stores only their last use,
so they appear in completion, aliases, the TUI and its recent list.
SSH options merge global, static host, then rules; rules can match
kind: static. Manage them with netssh hosts list|add|remove and in
netssh configure, which can now also continue without NetBox.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>