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
"/var/log/secure"에서 추출된 샘플 Linux SSH 로그 파일이 있습니다. PID(이 경우 19491 및 19486)를 필터링하고 싶습니다. Bash를 사용하여 어떻게 이를 달성할 수 있나요?
답변1
awk를 사용하세요:
awk -F '[][]' '{print $2}' /var/log/secure
-F '[][]'
열기 및 닫기 중괄호로 사용되는 파일 구분 기호$2
두 번째 필드의 유효성을 검사합니다.
답변2
이것은 약간 투박하지만 누군가가 더 짧은 버전을 게시할 수 있기를 바랐습니다. sed 명령을 사용하여 "[" 및 "]" 문자를 공백으로 바꾼 다음 awk 명령을 사용하여 6번째 필드를 인쇄했습니다.
# cat /var/log/secure | sed 's/\[/ /g' | sed 's/\]/ /g' | awk ' {print $6}'
19486
19486
19486
19491