给定别名,从 ssh 配置中获取主机名
Given the alias, get the HostName from ssh config
我有一个 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 ' == "hostname" { print }'
请注意,这具有支持所有 ssh 配置源(本地配置、命令行、全局配置、环境变量等)的优势。
只是为了完整性,快速而肮脏awk
解决方案
awk -v H="myAlias" '
tolower() == "host" { m= == H }
tolower() == "hostname" && m{ print }
' ~/.ssh/config
我有一个 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 ' == "hostname" { print }'
请注意,这具有支持所有 ssh 配置源(本地配置、命令行、全局配置、环境变量等)的优势。
只是为了完整性,快速而肮脏awk
解决方案
awk -v H="myAlias" '
tolower() == "host" { m= == H }
tolower() == "hostname" && m{ print }
' ~/.ssh/config