【发布时间】:2020-04-05 21:40:35
【问题描述】:
我有一个 SSH 配置文件,例如:
Host myAlias
HostName the.actual.host.name.com
是否可以从别名解析主机名,从 shell 中并且不连接到主机?我的目标是:
$ <something> myAlias
the.actual.host.name.com
【问题讨论】:
标签: bash ssh ssh-config
我有一个 SSH 配置文件,例如:
Host myAlias
HostName the.actual.host.name.com
是否可以从别名解析主机名,从 shell 中并且不连接到主机?我的目标是:
$ <something> myAlias
the.actual.host.name.com
【问题讨论】:
标签: bash ssh ssh-config
虽然可以使用简单的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
【讨论】:
-G。谢谢。
-G 选项未显示在帮助文本中,也未列在在线手册页中,但在我的本地手册页中。对于那些想知道的人:-G Causes ssh to print its configuration after evaluating Host and Match blocks and exit.