fix: interface_name strategy, instance hosts in sftp/scp, alias rewrites

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>
This commit is contained in:
Sebastian UnterschützandClaude Opus 5.5 committed 2026-11-14 12:30:24 +01:00
1 parent 3c9e54b254
commit 55e7a5106b
10 files changed
+144 -11

No files matched your search

+2 -2
View File
@@ -59,7 +59,7 @@ func (c Client) Parse(args []string) *ParsedArgs {
func (c Client) parsed(args []string, i int) *ParsedArgs {
dest, path := args[i], ""
if c.paths {
if d, p, remote := splitRemote(dest); remote {
if d, p, remote := c.splitRemote(dest); remote {
dest, path = d, p
}
}
@@ -88,7 +88,7 @@ func (c Client) replaceHost(args []string, dests []int, newHost string) []string
prefix, original = original[:at+1], original[at+1:]
}
if c.paths {
if _, path, remote := splitRemote(original); remote {
if _, path, remote := c.splitRemote(original); remote {
suffix = ":" + path
}
}