是否有實用程式可以使用 ssh 設定中的別名(而不是 /etc/hosts)來 ping 伺服器?

是否有實用程式可以使用 ssh 設定中的別名(而不是 /etc/hosts)來 ping 伺服器?

我正在嘗試透過將可以保留在版本控制下的 ssh 設定檔連結在一起來標準化跨專案的伺服器別名。

我希望能夠在一個地方(ssh 配置)定義機器別名以及 IP 位址和 ssh 金鑰。這與基於 ssh 的實用程式(如/bin/ssh和(我相信)scp)配合得很好。您甚至可以完成製表符。

但是,如果我在 ssh 配置中設定別名,則這些別名不可用於 ping 和其他普通網路實用程式。我不想讓 /etc/hosts 與 ssh 設定檔保持同步。

有沒有辦法

  1. 讓 ssh 別名自動工作,就像它們在/etc/hosts?或者
  2. 找一套使用活動 ssh 設定作為別名來源的網路實用程式?

答案1

我寫了一個小的 shell 函數,它確實可以做到這一點,並且可以放置在例如您的.bashrc.

它在調用原始 之前替換ping並查找最後一個參數(主機),即將調用where is 匹配的 IP/主機名稱。如果在檔案中找不到與最後一個參數相符的主機,則將使用原始值,就像標準一樣。.ssh/config/bin/pingping -c 2 <host>/bin/ping -c2 <hostname><hostname>.ssh/configping

ping()
{
    # Process args
    local i=0
    local options=""
    local host=""
    for arg
    do
        i=$(($i+1))
        if [ "$i" -lt "$#" ]
        then
            options="${options} ${arg}"
        else
            host="${arg}"
        fi
    done

    # Find host
    local hostname=$(awk "\$1==\"Host\" {host=\$2} \$1==\"HostName\" && host==\"${host}\" {print \$2}" "$HOME/.ssh/config")
    if [ -z "$hostname" ]
    then
        hostname="$host"
    fi

    # Run ping
    /bin/ping $options $hostname
}

答案2

pip3 安裝 sshping

然後 sshping 主機名

相關內容