awk 스크립트:

awk 스크립트:

우리는 고객에게 정기적인 소켓 덤프를 실행하도록 요청했으며 커뮤니티에서 네트워크 통계 소켓 목록에서 여러 연결 주소를 식별하는 방법에 대한 아이디어가 있는지 궁금했습니다.

Active Internet connections (including servers)
PCB      Proto Recv-Q Send-Q  Local Address      Foreign Address    (state)
-------- ----- ------ ------  ------------------ ------------------ -------
18970e0  TCP        0      0  10.51.57.214.1028     10.51.57.211.20021    ESTABLISHED
1897374  TCP        0      0  10.51.57.214.23       10.51.102.86.58998    ESTABLISHED
18960e4  TCP        0      0  10.51.57.214.1028     10.51.102.48.59466    ESTABLISHED
189747c  TCP        0      0  10.51.57.214.1031     10.51.82.22.63682     ESTABLISHED
18972f0  TCP        0      0  10.51.57.214.1028     10.51.101.72.64318    ESTABLISHED
18969a8  TCP        0      0  10.51.57.214.1028     10.51.102.75.61478    ESTABLISHED
1896e4c  TCP        0      0  10.51.57.214.1028     10.51.102.74.52111    ESTABLISHED
1896924  TCP        0      0  10.51.57.214.1028     10.51.57.232.57303    ESTABLISHED
1896d44  TCP        0      0  10.51.57.214.1028     10.51.57.232.57302    ESTABLISHED
1896ed0  TCP        0      0  10.51.57.214.1028     10.51.57.202.49952    ESTABLISHED
1896cc0  TCP        0      0  10.51.57.214.1028     10.51.57.242.56605    ESTABLISHED
1896b34  TCP        0      0  10.51.57.214.1028     10.51.57.245.49418    ESTABLISHED
1895b38  TCP        0      0  10.51.57.214.1028     10.51.57.245.49402    ESTABLISHED
18958a4  TCP        0      0  10.51.57.214.1028     10.51.57.244.49390    ESTABLISHED
18968a0  TCP        0      0  10.51.57.214.1028     10.51.101.36.60993    ESTABLISHED
1896714  TCP        0      0  10.51.57.214.1028     10.51.82.22.53412     ESTABLISHED
1896ab0  TCP        0      0  10.51.57.214.1028     10.51.57.243.50377    ESTABLISHED
1895ed4  TCP        0      0  10.51.57.214.1113     10.51.57.203.62953    ESTABLISHED
1896a2c  TCP        0     25  10.51.57.214.1028     10.51.57.243.50362    ESTABLISHED
1895bbc  TCP        0      0  10.51.57.214.1028     10.51.57.196.49313    ESTABLISHED
189681c  TCP        0      0  10.51.57.214.1028     10.51.57.101.52556    ESTABLISHED
1896798  TCP        0      0  10.51.57.214.1028     10.51.57.201.53746    ESTABLISHED
1896c3c  TCP        0      0  10.51.57.214.1028     10.51.57.193.51058    ESTABLISHED
1896588  TCP        0      0  10.51.57.214.1028     10.51.57.195.49358    ESTABLISHED
18962f4  TCP        0      0  10.51.57.214.1028     10.51.101.92.59060    ESTABLISHED
1896504  TCP        0      0  10.51.57.214.1028     10.51.57.213.62754    ESTABLISHED
18963fc  TCP        0      0  10.51.57.214.1028     10.51.57.213.62753    ESTABLISHED
1896690  TCP        0      0  10.51.57.214.1052     10.51.57.203.62953    ESTABLISHED
189660c  TCP        0      0  10.51.57.214.1028     10.51.57.241.54348    ESTABLISHED
1896168  TCP        0      0  10.51.57.214.1047     10.51.57.203.62953    ESTABLISHED
1896378  TCP        0      0  10.51.57.214.1031     10.51.57.203.62961    ESTABLISHED
1895f58  TCP        0      0  10.51.57.214.1028     10.51.57.203.62958    ESTABLISHED
1896270  TCP        0      0  10.51.57.214.1028     10.51.57.181.55438    ESTABLISHED

서버마다 로컬 주소가 바뀌기 때문에 외부 주소에만 관심이 있습니다. 실제로 설정되었거나 오래된 소켓으로 간주되어 스위치에서 고아가 되었습니다(일반적으로 소켓이 여러 개 설정된 이유입니다).

이를 찾는 유일한 방법은 탭, 점선 쿼드, 소켓 번호, 탭, ESTABLISHED 순으로 찾는 것 같습니다. 레코드는 이전 버전의 vxworks에서 가져온 것이므로 소켓 번호 앞에 콜론이 붙지 않지만 모든 엔드포인트가 1024보다 크다고 가정할 수 있습니다.

필터링된 IP 주소 집합을 표시한 다음 연결 수별로 정렬하는 가장 좋은 방법을 논리적으로 파악할 수 없습니까? 동시 연결이 두 개 이상인 것을 확인하고 싶습니다.

250개 이상의 연결이 있으면 논리적으로 로컬 주소가 되기 때문에 거기에 로컬 주소를 남겨 둘 수 있다고 생각했습니다!

매우 감사합니다

답변1

스크립트를 사용하여 awk데이터에서 IP를 검색할 수 있으며, IP가 발생할 때마다 counts배열로 수집할 수 있습니다. 입력을 모두 읽었으면 배열을 반복하고 개수와 IP를 인쇄합니다. 단, 두 번 이상 발생하는 경우에만 모두 파이프하여 정렬합니다.

awk 스크립트:

NF == 7 && $7 == "ESTABLISHED" {
  split($6, octets, ".")
  ip=octets[1] "." octets[2] "." octets[3] "." octets[4]
  counts[ip]++
}

END {
  for (i in counts)
    if (counts[i] > 2)
        print counts[i], i
}

다음과 같이 실행하세요:

awk -f awkscript < input | sort -n

예제 입력을 통해 IP 1개만 5번 나타납니다.

5 10.51.57.203

관련 정보