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/ssh
e (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
- fazer com que os aliases ssh funcionem automaticamente como se estivessem em
/etc/hosts
? ou - 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 ping
e faz a pesquisa do último argumento (host) .ssh/config
antes 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