netstat에서 정보를 구문 분석하는 방법은 무엇입니까?

netstat에서 정보를 구문 분석하는 방법은 무엇입니까?

의 출력에서 ​​다음을 어떻게 추출할 수 있습니까 netstat -anp?

  • IP 주소 삭제
  • 원격 포트
  • 로컬 애플리케이션 이름
  • 로컬 포트
  • PID

내 conky에서 실행하려면 이 정보가 필요합니다. PID 번호의 마지막 숫자가 누락된 것을 제외하고 모든 것이 표시됩니다. 명령 을 이해하지 못합니다 sed. 도와주세요.

명령은 다음과 같습니다.

netstat -anp | grep 'ESTABLISHED' | sed -r 's|.*192.[0-9.]+:([0-9]*)\s*([0-9.]+):([0-9]+)[^ESTABLISHED]+\ESTABLISHED ([0-9]*)[^/]+/([a-zA-Z0-9-]*)|\5 \2 \1 \3 \4|' | awk '{printf("%-14s %-15s %8s %6s %8s\n",$1,$2,$3,$4,$5)}' 

올바른 명령 출력을 표시하려면 설정된 연결(예: Firefox 사용)을 열어야 합니다.

답변1

문제는 sed 패턴의 이 부분에 있습니다.

([0-9]*)[^/]+/

0..9까지 임의의 숫자를 캡처한 다음 슬래시 "/"가 아닌 문자 1개 이상, "/"를 캡처합니다. 이것은 문자열과 일치시키려고 합니다.

ESTABLISHED 2783/firefox

처음에는 와 일치 2783하지만 일치하려면 마지막 숫자 3을 제거해야 합니다.슬래시가 아님.

해결 방법은 0 일치를 허용하도록 +a로 바꾸는 것입니다 .*

([0-9]*)[^/]*/

관련 정보