я пытаюсь сделать сценарий удара, кто считал .ssh/config файл и подключение к хостам, кто только использует IdentityFile или ssh ключ и команды выполнения на удаленных серверах. Таким образом, проблема состоит в том, что файл конфигурации содержит хосты, кто не использует IdentityFile и соединяется через пароли. Как к grep явно Хост и блоки IdentityFile в файле и других отбрасывания? Я имею уже, делают сценарий, которые соединяются со всеми хостами в файле с для цикла, но это не то, что я хочу 100%.Спасибо. Мой .ssh/config файл похож на это:
Host centos7-mp1
Hostname 192.168.89.102
user root
IdentityFile /root/.ssh/keys/id_rsa_passwordless
Host centos6-mp2
Hostname 192.168.89.103
user root
IdentityFile /root/.ssh/keys/id_rsa_passwordless
Host centosvm-test
Hostname 192.168.56.233
user test
awk
в абзаце режим полезен для этого случая - где у Вас есть многострочные записи, которые разделяются одной или несколькими пустыми строками, например, распечатать значение Host
ключ (второе поле) соответствия записей IdentityFile
можно сделать
awk '/IdentityFile/ {print $2}' RS= .ssh/config
Если необходимо соответствовать IdentityFile
нечувствительно к регистру можно изменить это к
awk 'toupper($0) ~ /IDENTITYFILE/ {print $2}' RS= .ssh/config
или (с GNU awk)
gawk '/IdentityFile/ {print $2}' RS= IGNORECASE=1 .ssh/config
Grep определенная строка в файле. Для grep:
$ grep -i 'string' ~/path/to/config/file/
, Если это точно, что Вы хотите..