我有一个SSH配置文件,例如:
Host myAlias
HostName the.actual.host.name.com
是否可以从外壳通过别名解析主机名,而无需连接到主机?我的目标是:
$ <something> myAlias
the.actual.host.name.com
答案 0 :(得分:3)
尽管可以使用简单的awk
脚本来解析〜/ .ssh / config,但是它可能不适用于任意配置文件,该文件可能具有各种块,等等。请考虑使用'ssh- G',它将转储ssh会话的参数,然后提取主机名属性
ssh -G myAlias | awk '$1 == "hostname" { print $2 }'
请注意,这具有支持所有ssh配置源(本地配置,命令行,全局配置,环境变量等)的优点。
仅出于完整性,快速而肮脏的awk
解决方案
awk -v H="myAlias" '
tolower($1) == "host" { m=$2 == H }
tolower($1) == "hostname" && m{ print $2 }
' ~/.ssh/config