È possibile eseguire una query su ~ / .ssh / config nella riga di comando? Diciamo che vorrei recuperare a quale indirizzo IP punta il particolare alias in un programma separato, è possibile?
È possibile eseguire una query su ~ / .ssh / config nella riga di comando? Diciamo che vorrei recuperare a quale indirizzo IP punta il particolare alias in un programma separato, è possibile?
Risposte:
Se capisco che vuoi solo restituire l'indirizzo IP, ad esempio 192.168.1.1, questo è un modo (incredibilmente fragile) di interrogare il file dalla riga di comando, a condizione che tu abbia le autorizzazioni appropriate per leggerlo e il tuo .ssh/config
è costantemente formattato:
awk '/Host $youralias/ {getline; print $2}' .ssh/config
Sto pubblicando questo solo perché vorrei capire come usare awk
per farlo, ma la mia conoscenza è, ovviamente, abbastanza limitata.
Non sono sicuro di quello che stai chiedendo ...
Supponi di avere un alias SSH per "mainserver", quindi puoi farlo ssh mainserver
. Se vuoi che funzioni anche per ping mainserver
, devi inserire un alias /etc/hosts
, in questo modo:
/ etc / hosts:
192.168.0.1 comp-one
192.168.0.2 comp-two
192.168.0.20 mainserver
Quindi potresti farlo ping mainserver
e farebbe il ping 192.168.0.20.
Questo è un modo leggermente più robusto per recuperare la HostName
base Host
nel .ssh/config
file.
sshalias()
{
awk "\$1==\"Host\" {host=\$2} \$1==\"HostName\" && host==\"$1\" {print \$2}" "$HOME/.ssh/config"
}
Il file che menzioni è un file di testo, contiene nomi host e possibilmente indirizzi IP per identificare le macchine a cui ti connetti. I nomi host possono essere risolti in indirizzi IP usando il host(1)
comando. Il formato è abbastanza semplice, quindi non è troppo difficile scoprire cosa c'è dentro. Si noti che i caratteri jolly possono essere utilizzati nel file (i miei stati *.fedoraproject.org
).