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:
1 parent
3c9e54b254
commit
55e7a5106b
10 files changed
+144
-11
No files matched your search
@@ -130,6 +130,7 @@ func findDestination(client internalssh.Client, args []string) (*destination, er
|
||||
// runClient resolves the NetBox host in args and execs ssh, sftp, or scp.
|
||||
func runClient(client internalssh.Client, flags internalssh.WrapperFlags, args []string) {
|
||||
cfg := loadConfigOrSetup()
|
||||
client = client.WithInstances(instanceNames(cfg))
|
||||
|
||||
dest, err := findDestination(client, args)
|
||||
if err != nil {
|
||||
@@ -175,6 +176,15 @@ func hostDefaults(cfg *config.Config, host resolvedHost) (string, int) {
|
||||
return user, port
|
||||
}
|
||||
|
||||
// instanceNames lists the named NetBox instances, which may prefix hostnames.
|
||||
func instanceNames(cfg *config.Config) []string {
|
||||
names := make([]string, 0, len(cfg.NetBoxes))
|
||||
for _, source := range cfg.NetBoxes {
|
||||
names = append(names, source.Name)
|
||||
}
|
||||
return names
|
||||
}
|
||||
|
||||
// prependArgs puts extra before args and shifts the destination indices.
|
||||
func prependArgs(extra, args []string, dests []int) []string {
|
||||
for i := range dests {
|
||||
|
||||
Reference in new issue
Block a user