Можно ли запросить ~ / .ssh / config в командной строке? Допустим, я хотел бы узнать, на какой IP-адрес указывает конкретный псевдоним в отдельной программе, возможно ли это?
Можно ли запросить ~ / .ssh / config в командной строке? Допустим, я хотел бы узнать, на какой IP-адрес указывает конкретный псевдоним в отдельной программе, возможно ли это?
Ответы:
Если я понимаю, что вы просто хотите вернуть IP-адрес, т. Е. 192.168.1.1, то это один (невероятно хрупкий) способ запроса файла из командной строки, при условии, что у вас есть соответствующие разрешения для его чтения, и вы .ssh/config
всегда отформатирован:
awk '/Host $youralias/ {getline; print $2}' .ssh/config
Я публикую это только потому, что хочу понять, как awk
это сделать, но мои знания, очевидно, весьма ограничены.
Не совсем уверен, что вы спрашиваете ...
Скажем, у вас есть псевдоним SSH для 'mainserver', чтобы вы могли это сделать ssh mainserver
. Если вы хотите, чтобы он также работал ping mainserver
, вам нужно ввести псевдоним /etc/hosts
, например, так:
/ и т.д. / хосты:
192.168.0.1 comp-one
192.168.0.2 comp-two
192.168.0.20 mainserver
Тогда вы могли бы сделать, ping mainserver
и это будет пинг 192.168.0.20.
Это немного более надежный способ извлечения на HostName
основе Host
в .ssh/config
файле.
sshalias()
{
awk "\$1==\"Host\" {host=\$2} \$1==\"HostName\" && host==\"$1\" {print \$2}" "$HOME/.ssh/config"
}
Упомянутый вами файл представляет собой текстовый файл, он содержит имена хостов и, возможно, IP-адреса для идентификации компьютеров, к которым вы подключаетесь. Имена хостов могут быть преобразованы в IP-адреса с помощью host(1)
команды. Формат довольно прост, поэтому найти его там не сложно. Обратите внимание, что в файле могут использоваться подстановочные знаки (мои состояния *.fedoraproject.org
).