소개
이 프로젝트에서는 특정 포트의 네트워크 통신 상태를 모니터링하는 Zsh 스크립트를 만드는 방법을 배우게 됩니다. 스크립트는 3 초 이내의 시간 동안 지정된 포트에서 전송 및 수신된 데이터 패킷 수를 계산합니다.
👀 미리보기
## 예시
$ sh /home/labex/project/netcheck.sh 22
Packages: 2
🎯 과제
이 프로젝트에서 다음을 배우게 됩니다:
- 포트 번호를 입력 매개변수로 받는 Zsh 스크립트를 만드는 방법
tcpdump명령을 사용하여 지정된 포트의 패킷 수를 캡처하고 계산하는 방법timeout명령을 사용하여 스크립트 실행에 3 초의 타임아웃을 설정하는 방법- 사용자 친화적인 형식으로 패킷 수를 출력하는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- 특정 포트의 네트워크 통신 상태를 모니터링할 수 있는 스크립트 개발
- Zsh 스크립트에서
tcpdump및timeout과 같은 일반적인 Linux 명령을 사용하는 방법 이해 - 실제 문제를 해결하기 위해 쉘 스크립트를 작성하고 테스트하는 경험 습득
netcheck.sh 스크립트 생성
이 단계에서는 3 초 이내의 시간 동안 지정된 포트에서 전송 및 수신된 패킷 수를 계산하는 netcheck.sh 스크립트를 생성합니다.
- 텍스트 편집기를 열고
/home/labex/project디렉토리에netcheck.sh라는 새 파일을 생성합니다. - 다음 코드를
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"
netcheck.sh파일을 저장합니다.
netcheck.sh 스크립트 테스트
이 단계에서는 netcheck.sh 스크립트가 예상대로 작동하는지 확인하기 위해 테스트합니다.
- 터미널을 열고
/home/labex/project디렉토리로 이동합니다. - 포트 번호
22를 인수로 사용하여netcheck.sh스크립트를 실행합니다:
sh /home/labex/project/netcheck.sh 22
- 스크립트는 3 초 이내의 시간 동안 포트
22에서 전송 및 수신된 패킷 수를 출력해야 합니다. 예를 들어:
Packages: 2
- 스크립트가 올바르게 작동하는지 확인하기 위해 다른 포트 번호로 스크립트를 실행해 봅니다.
netcheck.sh 스크립트 이해
이 단계에서는 netcheck.sh 스크립트의 코드를 이해합니다.
- 스크립트는 Zsh 쉘을 사용하여 실행되도록 지정하는 shebang 라인
#!/bin/zsh로 시작합니다. - 스크립트는 포트 번호 인수가 제공되었는지 확인합니다. 그렇지 않은 경우 오류 메시지를 출력하고 종료합니다.
- 스크립트는 제공된 포트 번호를
port변수에 할당합니다. - 스크립트는
timeout명령을 사용하여 3 초의 타임아웃을 설정한 다음,tcpdump명령을 사용하여 지정된 포트의 패킷 수를 계산합니다.-c 0옵션은tcpdump에게 모든 패킷을 캡처하도록 지시하고,"port $port"필터는 지정된 포트의 패킷만 계산되도록 합니다. - 스크립트는
tcpdump명령의 출력을 캡처하고wc -l을 사용하여 줄 수를 계산하여 총 패킷 수를 얻습니다. - 마지막으로, 스크립트는
echo "Packages: $packages"를 사용하여 패킷 수를 출력합니다.
축하합니다! 네트워크 통신 상태를 모니터링하기 위해 netcheck.sh 스크립트를 성공적으로 생성하고 테스트했습니다. 필요에 따라 스크립트를 자유롭게 탐색하고 수정하십시오.
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.


