OpenSSH - mapuj aliasy w ~ / .ssh / config na adresy IP w wierszu poleceń

9

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?

użytkownik1042840
źródło

Odpowiedzi:

2

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/configjest konsekwentnie sformatowany:

awk '/Host $youralias/ {getline; print $2}' .ssh/config


Publikuję to tylko, ponieważ chciałbym zrozumieć, jak awkto zrobić, ale moja wiedza jest oczywiście dość ograniczona.

jasonwryan
źródło
1

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 mainserveri ping pinguje 192.168.0.20.

BenjiWiebe
źródło
0

To jest nieco bardziej wydajny sposób pobierania HostNamena podstawie Hostw .ssh/configpliku.

sshalias()
{
    awk "\$1==\"Host\" {host=\$2} \$1==\"HostName\" && host==\"$1\" {print \$2}" "$HOME/.ssh/config"
}
Andrzej Pronobis
źródło
-1

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).

vonbrand
źródło