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/ssh
y (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?
- ¿Conseguir que los alias ssh funcionen automáticamente como si estuvieran en
/etc/hosts
? o - ¿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 ping
y busca el último argumento (host) .ssh/config
antes 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