
Aug 12 01:30:26 server.example.com sshd[19486]: Failed password for root from X.X.X.X port 50528 ssh2
Aug 12 01:30:26 server.example.com sshd[19486]: Received disconnect from X.X.X.X port 50528:11: Bye Bye [preauth]
Aug 12 01:30:26 server.example.com sshd[19486]: Disconnected from X.X.X.X port 50528 [preauth]
Aug 12 01:30:28 server.example.com sshd[19491]: Failed password for root from X.X.X.X port 59628 ssh2
Eu tenho um exemplo de arquivo de log SSH do Linux extraído de "/var/log/secure". Gostaria de filtrar o PID (19491 e 19486 neste exemplo). Como posso conseguir isso usando o bash?
Responder1
Usando o awk:
awk -F '[][]' '{print $2}' /var/log/secure
-F '[][]'
ter o separador de arquivos como colchetes de abertura e fechamento$2
para validar o segundo campo.
Responder2
Isso é um pouco desajeitado, mas espero que alguém possa postar uma versão mais curta: usei o comando sed para substituir os caracteres "[" e "]" por espaços vazios e, em seguida, usei o comando awk para imprimir o 6º campo
# cat /var/log/secure | sed 's/\[/ /g' | sed 's/\]/ /g' | awk ' {print $6}'
19486
19486
19486
19491