Est-il possible d'interroger ~ / .ssh / config dans la ligne de commande? Supposons que je souhaite récupérer l'adresse IP vers laquelle pointe l'alias particulier dans un programme distinct, est-ce possible?
la source
Est-il possible d'interroger ~ / .ssh / config dans la ligne de commande? Supposons que je souhaite récupérer l'adresse IP vers laquelle pointe l'alias particulier dans un programme distinct, est-ce possible?
Si je comprends que vous voulez juste l'adresse IP renvoyée, par exemple., 192.168.1.1, alors c'est une façon (très fragile) d'interroger le fichier à partir de la ligne de commande, vous disposez des autorisations appropriées pour le lire et votre .ssh/config
est toujours formaté:
awk '/Host $youralias/ {getline; print $2}' .ssh/config
Je ne poste que cela car je voudrais comprendre comment l'utiliser awk
pour le faire, mais mes connaissances sont, bien sûr, assez limitées.
Pas totalement sûr de ce que vous demandez ...
Supposons que vous ayez un alias SSH pour 'mainserver' afin que vous puissiez le faire ssh mainserver
. Si vous voulez qu'il fonctionne également pour ping mainserver
, vous devez mettre un alias /etc/hosts
, comme ceci:
/ etc / hosts:
192.168.0.1 comp-one
192.168.0.2 comp-two
192.168.0.20 mainserver
Ensuite, vous pouvez le faire ping mainserver
et il cinglerait 192.168.0.20.
Il s'agit d'un moyen légèrement plus robuste de récupérer le fichier HostName
basé sur Host
dans le .ssh/config
fichier.
sshalias()
{
awk "\$1==\"Host\" {host=\$2} \$1==\"HostName\" && host==\"$1\" {print \$2}" "$HOME/.ssh/config"
}
Le fichier que vous mentionnez est un fichier texte, il contient des noms d'hôtes et éventuellement des adresses IP pour identifier les machines auxquelles vous vous connectez. Les noms d'hôte peuvent être résolus en adresses IP à l'aide de la host(1)
commande. Le format est assez simple, il n'est donc pas trop difficile de savoir ce qu'il y a dedans. Notez que les caractères génériques peuvent être utilisés dans le fichier (les états de la mienne *.fedoraproject.org
).