Ist es möglich, ~ / .ssh / config in der Kommandozeile abzufragen? Angenommen, ich möchte in einem separaten Programm abrufen, auf welche IP-Adresse der jeweilige Alias verweist. Ist dies möglich?
Ist es möglich, ~ / .ssh / config in der Kommandozeile abzufragen? Angenommen, ich möchte in einem separaten Programm abrufen, auf welche IP-Adresse der jeweilige Alias verweist. Ist dies möglich?
Antworten:
Wenn ich verstehe, dass Sie nur die IP-Adresse zurückgeben möchten, z. B. 192.168.1.1, ist dies eine (unglaublich spröde) Möglichkeit, die Datei über die Befehlszeile abzufragen, vorausgesetzt, Sie haben die entsprechenden Berechtigungen zum Lesen und Ihre .ssh/config
ist konsistent formatiert:
awk '/Host $youralias/ {getline; print $2}' .ssh/config
Ich poste dies nur, weil ich verstehen möchte, wie man awk
das macht, aber mein Wissen ist offensichtlich ziemlich begrenzt.
Nicht ganz sicher, was Sie fragen ...
Angenommen, Sie haben einen SSH-Alias für 'mainserver', damit Sie dies tun können ssh mainserver
. Wenn Sie möchten, dass es auch funktioniert ping mainserver
, müssen Sie einen Alias /etc/hosts
wie folgt eingeben:
/ etc / hosts:
192.168.0.1 comp-one
192.168.0.2 comp-two
192.168.0.20 mainserver
Dann könnten Sie tun ping mainserver
und es würde 192.168.0.20 pingen.
Dies ist eine etwas robustere Methode zum Abrufen der HostName
Basis Host
in der .ssh/config
Datei.
sshalias()
{
awk "\$1==\"Host\" {host=\$2} \$1==\"HostName\" && host==\"$1\" {print \$2}" "$HOME/.ssh/config"
}
Die von Ihnen erwähnte Datei ist eine Textdatei. Sie enthält Hostnamen und möglicherweise IP-Adressen , um die Computer zu identifizieren, mit denen Sie eine Verbindung herstellen. Hostnamen können mit dem host(1)
Befehl in IP-Adressen aufgelöst werden . Das Format ist recht einfach, so dass es nicht allzu schwer ist herauszufinden, was sich darin befindet. Beachten Sie, dass in der Datei Platzhalter verwendet werden können (Minenzustände *.fedoraproject.org
).