¿Existe una utilidad para hacer ping a un servidor usando alias en la configuración ssh (en lugar de /etc/hosts)?

¿Existe una utilidad para hacer ping a un servidor usando alias en la configuración ssh (en lugar de /etc/hosts)?

Estoy intentando estandarizar los alias de mi servidor en todos los proyectos vinculando archivos de configuración ssh que puedo mantener bajo control de versiones.

Me gustaría poder definir alias de máquinas junto con direcciones IP y claves ssh, todo en un solo lugar (las configuraciones ssh). Esto funciona muy bien con utilidades basadas en ssh como /bin/sshy (creo) scp. Incluso puedes completar pestañas.

Sin embargo, si configuro los alias en mi configuración ssh, entonces los alias no estarán disponibles para hacer ping y otras utilidades de red básicas. No quiero tener que mantener mi /etc/hosts sincronizado con mis archivos de configuración ssh.

¿Hay alguna manera de hacerlo?

  1. ¿Conseguir que los alias ssh funcionen automáticamente como si estuvieran en /etc/hosts? o
  2. ¿Encontrar un conjunto de utilidades de red que utilice la configuración ssh activa como fuente de alias?

Respuesta1

Escribí una pequeña función de shell que hace exactamente eso y se puede colocar, por ejemplo, en tu archivo .bashrc.

Reemplaza pingy busca el último argumento (host) .ssh/configantes de llamar al original /bin/ping, es decir, ping -c 2 <host>llamará /bin/ping -c2 <hostname>dónde <hostname>está la IP/nombre de host coincidente en .ssh/config. Si no se encuentra en el archivo ningún host que coincida con el último argumento, se utiliza el valor original como con el estándar 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
}

Respuesta2

pip3 instalar sshping

luego envía el nombre de host

información relacionada