Existe um utilitário para executar ping em um servidor usando aliases na configuração ssh (em vez de/etc/hosts)?

Existe um utilitário para executar ping em um servidor usando aliases na configuração ssh (em vez de/etc/hosts)?

Estou tentando padronizar meus aliases de servidor entre projetos, vinculando arquivos de configuração ssh que posso manter sob controle de versão.

Eu gostaria de poder definir aliases de máquina junto com endereços IP e chaves ssh, tudo em um só lugar (as configurações ssh). Isso funciona muito bem com utilitários baseados em ssh como /bin/sshe (acredito) scp. Você ainda consegue completar a guia.

No entanto, se eu definir os aliases em minha configuração ssh, os aliases não estarão disponíveis para ping e outros utilitários de rede vanilla. Não quero manter meu /etc/hosts sincronizado com meus arquivos de configuração ssh.

Existe uma maneira de

  1. fazer com que os aliases ssh funcionem automaticamente como se estivessem em /etc/hosts? ou
  2. encontre um conjunto de utilitários de rede que use a configuração ssh ativa como fonte de aliases?

Responder1

Eu escrevi uma pequena função shell que faz exatamente isso e pode ser colocada, por exemplo, no seu arquivo .bashrc.

Ele substitui pinge faz a pesquisa do último argumento (host) .ssh/configantes de chamar o original /bin/ping, ou seja, ping -c 2 <host>chamará /bin/ping -c2 <hostname>onde <hostname>está o IP/nome do host correspondente .ssh/config. Se nenhum host correspondente ao último argumento for encontrado no arquivo, o valor original será usado como padrão ping.

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
}

Responder2

pip3 instalar sshping

então sshping nome do host

informação relacionada