7

我有一个 SSH 配置文件,例如:

Host myAlias
  HostName the.actual.host.name.com

是否可以从别名、shell 中解析主机名而不连接到主机?我的目标是:

$ <something> myAlias
the.actual.host.name.com
4

1 回答 1

11

虽然可以使用简单的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
于 2019-12-12T13:39:08.073 回答