활성 연결에 대한 netstat 결과 구문 분석에 대한 생각

활성 연결에 대한 netstat 결과 구문 분석에 대한 생각

내 서버에 대한 역방향 SSH 연결을 생성하여 원격으로 SSH를 통해 관리할 수 있는 원격 장치가 여러 개 있습니다. 그들은 맞춤형 포트를 통해 나에게 다시 연결됩니다. 서버에서 작업을 수행 하면 netstat -an | grep 127.0.0.0.1:현재 연결된 장치 목록이 표시됩니다. 출력은 다음과 같습니다.

tcp        0      0 127.0.0.1:6001          0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:6002          0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:6003          0.0.0.0:*               LISTEN

여기서 600x는 장치가 연결된 포트입니다. 내 문제는 이것이다. 현재 연결된 장치를 표시하는 서버에서 실행할 수 있는 스크립트를 만들고 싶습니다. 내 스크립트가 읽을 수 있고 다음과 같이 내 장치를 나열하는 구성 파일을 원합니다.

NORTH:6001

SOUTH:6002

EAST:6003

WEST:6004

스크립트는 명령의 출력을 구문 분석 netstat하고 출력은 다음과 같습니다.

유효한 연결: 북쪽, 남쪽, 동쪽

비활성 연결: WEST

너무 혼란스럽지 않기를 바랍니다. grep이나 awk로 할 수 있는 일인가요?

답변1

다음은 세 단계입니다.

  1. netstat에서 활성 포트 이름을 추출하세요.

    netstat -an | grep 127.0.0.1: | awk -F "[ :]+" '{print $5}'

awk공백과 콜론 집합을 구분 기호로 지정 하고 포트 ID만 선택합니다.

  1. device_list.txtgrep과 1단계의 명령 출력을 패턴으로 사용하여 장치 목록 파일(예: 명명된)에서 이러한 포트를 비교합니다.

    netstat -an | grep 127.0.0.1: | awk -F "[ :]+" '{print $5}' | grep -f - device_list.txt

이것은 다음과 같은 출력을 제공합니다

NORTH:6001
SOUTH:6002
EAST:6003
  1. -vgrep a를 사용하여 비활성 연결을 얻을 수 있습니다

    netstat -an | grep 127.0.0.1: | awk -F "[ :]+" '{print $5}' | grep -v -f - device_list.txt

이것의 출력은 다음과 같습니다

WEST:6004

그런 다음 위의 내용을 중심으로 스크립트를 작성하여 원하는 형식으로 인쇄할 수 있습니다.

관련 정보