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/configist konsistent formatiert:
awk '/Host $youralias/ {getline; print $2}' .ssh/config
Ich poste dies nur, weil ich verstehen möchte, wie man awkdas 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/hostswie 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 mainserverund es würde 192.168.0.20 pingen.
Dies ist eine etwas robustere Methode zum Abrufen der HostNameBasis Hostin der .ssh/configDatei.
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).