Disputa de texto: Como posso obter apenas o comentário chave de authorized_keys?

0

Auditando alguns servidores, eu preciso de uma lista de comentários em todas as chaves autorizadas no arquivo authorized_keys.

Como posso cortar esse arquivo para exibir uma lista de comentários, por exemplo, user @ host?

Qualquer coisa pode aparecer antes da chave, incluindo espaços

O comentário principal aparece logo após a chave

O comentário principal é o último item da linha

O comentário principal pode conter espaços

A chave é o campo mais longo em cada linha

É desejado que o comentário chave somente seja extraído de cada linha.

    
por Rory 19.06.2012 / 11:46

2 respostas

1

Atualizado para incluir /^==/ lines:

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

GNU sed (usando o regexen POSIX Extended):

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

Isso ignorará as chaves desativadas (comentadas) e [principalmente] lidará corretamente com as linhas contendo opções por chave (por exemplo, from="1.2.3.4" ssh-rsa AAAAB3NzaC1yc2EA my comment ).

Note que os comentários são praticamente sem sentido - comparar as impressões digitais principais pode ser melhor em alguns casos.

    
por 19.06.2012 / 12:01
0

How can I cut...

Exatamente.

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

    
por 19.06.2012 / 11:59

Tags