¿Cómo filtrar PID de los registros de seguridad SSH de Linux?

¿Cómo filtrar PID de los registros de seguridad SSH de 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

Tengo un archivo de registro SSH de Linux de muestra extraído de "/var/log/secure". Me gustaría filtrar el PID (19491 y 19486 en este ejemplo). ¿Cómo puedo lograr esto usando bash?

Respuesta1

Usando awk:

awk -F '[][]' '{print $2}'  /var/log/secure
  • -F '[][]'tener un separador de archivos como llaves de apertura y cierre
  • $2 para validar el segundo campo.

Respuesta2

Esto es un poco torpe, pero espero que alguien pueda publicar una versión más corta: utilicé el comando sed para reemplazar los caracteres "[" y "]" con espacios vacíos, y luego usé el comando awk para imprimir el sexto campo.

# cat /var/log/secure | sed 's/\[/ /g' | sed 's/\]/ /g' | awk ' {print $6}'
19486
19486
19486
19491

información relacionada