При проверке некоторых серверов мне нужен список комментариев ко всем авторизованным ключам в файле авторизованных ключах.

Как я могу вырезать этот файл для отображения списка комментариев, например, user @ host?

Перед ключом может появиться что угодно, включая пробелы

Ключевой комментарий появляется сразу после ключа

Ключевой комментарий - последний элемент в строке

Ключевой комментарий может содержать пробелы

Ключ - самое длинное поле в каждой строке

Желательно, чтобы из каждой строки извлекался только ключевой комментарий.

2 ответа2

1

Обновлено, чтобы включить /^==/ строки:

perl -nE 'if (/^==/) { print }
          elsif (!/^#/ and ($c) = /\b\w+\s+AAAA\S+(.*)$/)
            { $c =~ s/^\s+//; say $c || "<no comment>" }'

GNU sed (используя регулярное выражение POSIX Extended):

sed -nr '/^==/{p; d}; /^#/d;
         /.*\<\w+\s+AAAA\S+/{s///; s/^\s+//; s/^$/<no comment>/; p}'

Это будет пропускать отключенные (закомментированные) ключи и [в основном] правильно обрабатывать строки, содержащие опции для каждого ключа (например, from="1.2.3.4" ssh-rsa AAAAB3NzaC1yc2EA my comment).

Обратите внимание, что комментарии практически не имеют смысла - сравнение ключевых отпечатков может быть лучше в некоторых случаях.

0

Как я могу cut ...

Именно так.

cut -d' ' -f3- .ssh/authorized_keys

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .