네트워크 데이터 패킷 통계

LinuxBeginner
지금 연습하기

소개

이 프로젝트에서는 특정 포트의 네트워크 통신 상태를 모니터링하는 Zsh 스크립트를 만드는 방법을 배우게 됩니다. 스크립트는 3 초 이내의 시간 동안 지정된 포트에서 전송 및 수신된 데이터 패킷 수를 계산합니다.

👀 미리보기

## 예시
$ sh /home/labex/project/netcheck.sh 22
Packages: 2

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • 포트 번호를 입력 매개변수로 받는 Zsh 스크립트를 만드는 방법
  • tcpdump 명령을 사용하여 지정된 포트의 패킷 수를 캡처하고 계산하는 방법
  • timeout 명령을 사용하여 스크립트 실행에 3 초의 타임아웃을 설정하는 방법
  • 사용자 친화적인 형식으로 패킷 수를 출력하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • 특정 포트의 네트워크 통신 상태를 모니터링할 수 있는 스크립트 개발
  • Zsh 스크립트에서 tcpdumptimeout과 같은 일반적인 Linux 명령을 사용하는 방법 이해
  • 실제 문제를 해결하기 위해 쉘 스크립트를 작성하고 테스트하는 경험 습득

netcheck.sh 스크립트 생성

이 단계에서는 3 초 이내의 시간 동안 지정된 포트에서 전송 및 수신된 패킷 수를 계산하는 netcheck.sh 스크립트를 생성합니다.

  1. 텍스트 편집기를 열고 /home/labex/project 디렉토리에 netcheck.sh라는 새 파일을 생성합니다.
  2. 다음 코드를 netcheck.sh 파일에 추가합니다:
#!/bin/zsh

## This script counts the number of packets transmitted and received for a specified port within a 3-second timeframe using tcpdump.

## Check if the port number argument is provided
if [ $## -eq 0 ]; then
  echo "Please provide the port number to be counted as an argument."
  exit 1
fi

## Get the input port number
port=$1

## Use the timeout command to set a 3-second timeout and use tcpdump to count the number of packets for the specified port
packages=$(timeout 3 tcpdump -c 0 -i any "port $port" 2> /dev/null | wc -l)

## Output the count of packets
echo "Packages: $packages"
  1. netcheck.sh 파일을 저장합니다.
✨ 솔루션 확인 및 연습

netcheck.sh 스크립트 테스트

이 단계에서는 netcheck.sh 스크립트가 예상대로 작동하는지 확인하기 위해 테스트합니다.

  1. 터미널을 열고 /home/labex/project 디렉토리로 이동합니다.
  2. 포트 번호 22를 인수로 사용하여 netcheck.sh 스크립트를 실행합니다:
sh /home/labex/project/netcheck.sh 22
  1. 스크립트는 3 초 이내의 시간 동안 포트 22에서 전송 및 수신된 패킷 수를 출력해야 합니다. 예를 들어:
Packages: 2
  1. 스크립트가 올바르게 작동하는지 확인하기 위해 다른 포트 번호로 스크립트를 실행해 봅니다.
✨ 솔루션 확인 및 연습

netcheck.sh 스크립트 이해

이 단계에서는 netcheck.sh 스크립트의 코드를 이해합니다.

  1. 스크립트는 Zsh 쉘을 사용하여 실행되도록 지정하는 shebang 라인 #!/bin/zsh로 시작합니다.
  2. 스크립트는 포트 번호 인수가 제공되었는지 확인합니다. 그렇지 않은 경우 오류 메시지를 출력하고 종료합니다.
  3. 스크립트는 제공된 포트 번호를 port 변수에 할당합니다.
  4. 스크립트는 timeout 명령을 사용하여 3 초의 타임아웃을 설정한 다음, tcpdump 명령을 사용하여 지정된 포트의 패킷 수를 계산합니다. -c 0 옵션은 tcpdump에게 모든 패킷을 캡처하도록 지시하고, "port $port" 필터는 지정된 포트의 패킷만 계산되도록 합니다.
  5. 스크립트는 tcpdump 명령의 출력을 캡처하고 wc -l을 사용하여 줄 수를 계산하여 총 패킷 수를 얻습니다.
  6. 마지막으로, 스크립트는 echo "Packages: $packages"를 사용하여 패킷 수를 출력합니다.

축하합니다! 네트워크 통신 상태를 모니터링하기 위해 netcheck.sh 스크립트를 성공적으로 생성하고 테스트했습니다. 필요에 따라 스크립트를 자유롭게 탐색하고 수정하십시오.

✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.