Wie filtert man PID aus Linux SSH-Sicherheitsprotokollen?

Wie filtert man PID aus Linux SSH-Sicherheitsprotokollen?
  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

Ich habe eine Beispiel-Linux-SSH-Protokolldatei aus "/var/log/secure". Ich möchte die PID filtern (in diesem Beispiel 19491 und 19486). Wie kann ich dies mit Bash erreichen?

Antwort1

Mit awk:

awk -F '[][]' '{print $2}'  /var/log/secure
  • -F '[][]'als Dateitrenner Klammern öffnen und schließen
  • $2 um das zweite Feld zu validieren.

Antwort2

Das ist etwas umständlich, aber ich hoffe, dass jemand eine kürzere Version posten kann: Ich habe den Befehl sed verwendet, um die Zeichen "[" und "]" durch Leerzeichen zu ersetzen, und dann den Befehl awk verwendet, um das 6. Feld auszudrucken

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

verwandte Informationen