我有一个 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
解决方案
awk -v H="myAlias" '
tolower($1) == "host" { m=$2 == H }
tolower($1) == "hostname" && m{ print $2 }
' ~/.ssh/config