Como filtrar o PID dos logs de segurança SSH do Linux?

Como filtrar o PID dos logs de segurança SSH do Linux?
  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

informação relacionada