Eu escrevi uma pequena função shell que faz exatamente isso e pode ser colocada, por exemplo no seu .bashrc
.
Ele substitui ping
e faz a pesquisa do último argumento (host) em .ssh/config
antes de chamar o original /bin/ping
, ou seja, ping -c 2 <host>
chamará /bin/ping -c2 <hostname>
onde <hostname>
é o IP / nome do host correspondente em código%. Se nenhum host correspondente ao último argumento for encontrado no arquivo, o valor original será usado com o padrão .ssh/config
.
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 "\==\"Host\" {host=\} \==\"HostName\" && host==\"${host}\" {print \}" "$HOME/.ssh/config")
if [ -z "$hostname" ]
then
hostname="$host"
fi
# Run ping
/bin/ping $options $hostname
}