2014-08-31 3 views
0

У меня есть несколько хостов, сконфигурированных в ~/.ssh/конфигурации, например:расширить SSH имя хоста в сценарии оболочки

Host SomeHost 
    Hostname 10.0.0.3 
    User SomeUser 

Я пытаюсь получить имя хоста часть (10.0.0.3) в виде переменная из скрипта оболочки (переменная% h). Как это возможно?

+1

Короткие разбора файла самостоятельно, нет. Конфигурация не существует вне файла до тех пор, пока 'ssh' не прочитает ее при запуске, а' ssh' не предоставит API для запросов к конфигурациям. – chepner

+2

Это звучит как проблема [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Какую проблему вы действительно * пытаетесь решить? –

+0

@glennjackman Я пытаюсь использовать nmap, чтобы узнать, открыт ли удаленный хост порт 22. Это намного быстрее, чем использование ssh для использования тестового соединения. – CrimsonKing

ответ

1
host2ip() { 
    awk -v host="$1" ' 
     $1 == "Host" && $2 == host {have_host = 1} 
     have_host && $1 == "Hostname" {print $2; exit} 
    ' ~/.ssh/config 
} 

ip=$(host2ip SomeHost) 
echo $ip 
10.0.0.3 
Смежные вопросы