Czy możliwe jest zapytanie ~ / .ssh / config w linii poleceń? Powiedzmy, że chciałbym pobrać adres IP, na który wskazuje dany alias w osobnym programie, czy to możliwe?
źródło
Czy możliwe jest zapytanie ~ / .ssh / config w linii poleceń? Powiedzmy, że chciałbym pobrać adres IP, na który wskazuje dany alias w osobnym programie, czy to możliwe?
Jeśli dobrze rozumiem, że chcesz po prostu adres IP wrócił, tzn. 192.168.1.1, to jest jeden (niezwykle kruche) sposób odpytywania plik z wiersza poleceń, pod warunkiem posiadania odpowiednich uprawnień, aby ją przeczytać i Twój .ssh/config
jest konsekwentnie sformatowany:
awk '/Host $youralias/ {getline; print $2}' .ssh/config
Publikuję to tylko, ponieważ chciałbym zrozumieć, jak awk
to zrobić, ale moja wiedza jest oczywiście dość ograniczona.
Nie jestem całkowicie pewien, o co pytasz ...
Załóżmy, że masz alias SSH dla „mainserver”, więc możesz to zrobić ssh mainserver
. Jeśli chcesz, aby również działał ping mainserver
, musisz wstawić alias /etc/hosts
:
/ etc / hosts:
192.168.0.1 comp-one
192.168.0.2 comp-two
192.168.0.20 mainserver
Wtedy możesz to zrobić ping mainserver
i ping pinguje 192.168.0.20.
To jest nieco bardziej wydajny sposób pobierania HostName
na podstawie Host
w .ssh/config
pliku.
sshalias()
{
awk "\$1==\"Host\" {host=\$2} \$1==\"HostName\" && host==\"$1\" {print \$2}" "$HOME/.ssh/config"
}
Wspomniany plik jest plikiem tekstowym, zawiera nazwy hostów i ewentualnie adresy IP w celu identyfikacji komputerów, z którymi się łączysz. Nazwy hostów można przekształcić na adresy IP za pomocą host(1)
polecenia. Format jest dość prosty, więc nie jest zbyt trudno dowiedzieć się, co tam jest. Zauważ, że w pliku można używać symboli wieloznacznych (stanów kopalni *.fedoraproject.org
).