【问题标题】:Given the alias, get the HostName from ssh config给定别名,从 ssh config 获取 HostName
【发布时间】: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


    【解决方案1】:

    虽然可以使用简单的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.
    猜你喜欢
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 2023-01-27
    • 2012-03-25
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多