Grep определенные строки в файле конфигурации

я пытаюсь сделать сценарий удара, кто считал .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
1
задан 24 March 2017 в 14:36

2 ответа

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
2
ответ дан 7 December 2019 в 13:35

Grep определенная строка в файле. Для grep:

$ grep -i 'string' ~/path/to/config/file/

, Если это точно, что Вы хотите..

0
ответ дан 7 December 2019 в 13:35

Другие вопросы по тегам:

Похожие вопросы: