我有一个类似这样的SSH配置文件:
Host myAlias
HostName the.actual.host.name.com
是否可能在不连接到主机的情况下,从shell解析别名的主机名?我想要类似以下命令的效果:
$ <something> myAlias
the.actual.host.name.com
我有一个类似这样的SSH配置文件:
Host myAlias
HostName the.actual.host.name.com
是否可能在不连接到主机的情况下,从shell解析别名的主机名?我想要类似以下命令的效果:
$ <something> myAlias
the.actual.host.name.com
尽管可以使用简单的awk
脚本解析~/.ssh/config
文件,但对于可能包含各种块等的任意配置文件可能无法正常工作。相反,考虑使用“ssh -G”命令,它将转储ssh会话的参数,然后提取主机名属性。
ssh -G myAlias | awk '$1 == "hostname" { print $2 }'
请注意,这样做的优点是支持所有 ssh 配置来源(本地配置、命令行、全局配置、环境变量等)。awk -v H="myAlias" '
tolower($1) == "host" { m=$2 == H }
tolower($1) == "hostname" && m{ print $2 }
' ~/.ssh/config
-G
这个选项。谢谢。 - Joe Kearney-G
选项在帮助文本中不显示,在在线手册页中也没有列出,但在我的本地手册页中有。对于那些想知道的人:-G
会导致ssh在评估主机和匹配块后打印其配置并退出。 - alwaysmpe