Введение
В этом проекте вы научитесь создавать скрипт на Zsh, который будет мониторить статус сетевого общения определенного порта. Скрипт будет подсчитывать количество переданных и полученных пакетов данных на указанном порте за период в 3 секунды.
👀 Предварительный просмотр
## Пример
$ sh /home/labex/project/netcheck.sh 22
Packages: 2
🎯 Задачи
В этом проекте вы научитесь:
- Создавать скрипт на Zsh, который принимает номер порта в качестве входного параметра
- Использовать команду
tcpdumpдля захвата и подсчета количества пакетов для указанного порта - Устанавливать таймаут в 3 секунды для выполнения скрипта с использованием команды
timeout - Выводить количество пакетов в удобочитаемом формате
🏆 Достижения
После завершения этого проекта вы сможете:
- Разрабатывать скрипт, который может мониторить статус сетевого общения определенного порта
- Разбираться, как использовать общие команды Linux, такие как
tcpdumpиtimeout, в скрипте на Zsh - Получать опыт в написании и тестировании shell-скриптов для решения практических задач
Создайте скрипт netcheck.sh
В этом шаге вы создадите скрипт netcheck.sh, который будет подсчитывать количество переданных и полученных пакетов для указанного порта за период в 3 секунды.
- Откройте текстовый редактор и создайте новый файл с именем
netcheck.shв директории/home/labex/project. - Добавьте следующий код в файл
netcheck.sh:
#!/bin/zsh
## Этот скрипт подсчитывает количество переданных и полученных пакетов для указанного порта за период в 3 секунды с использованием tcpdump.
## Проверьте, был ли передан аргумент с номером порта
if [ $## -eq 0 ]; then
echo "Пожалуйста, укажите номер порта для подсчета в качестве аргумента."
exit 1
fi
## Получите номер входного порта
port=$1
## Используйте команду timeout для установки таймаута в 3 секунды и tcpdump для подсчета количества пакетов для указанного порта
packages=$(timeout 3 tcpdump -c 0 -i any "port $port" 2> /dev/null | wc -l)
## Выведите количество пакетов
echo "Packages: $packages"
- Сохраните файл
netcheck.sh.
Тестируйте скрипт netcheck.sh
В этом шаге вы будете тестировать скрипт netcheck.sh, чтобы убедиться, что он работает как ожидается.
- Откройте терминал и перейдите в директорию
/home/labex/project. - Запустите скрипт
netcheck.shс аргументом номером порта22:
sh /home/labex/project/netcheck.sh 22
- Скрипт должен вывести количество переданных и полученных пакетов на порту
22за период в 3 секунды, например:
Packages: 2
- Попробуйте запустить скрипт с разными номерами портов, чтобы убедиться, что он работает правильно.
Разберитесь в скрипте netcheck.sh
В этом шаге вы будете разбираться в коде скрипта netcheck.sh.
- Скрипт начинается с символа
#!, называемого shebang, и имеет строку#!/bin/zsh, которая указывает, что его следует выполнять с использованием оболочки Zsh. - Скрипт проверяет, был ли передан аргумент с номером порта. Если нет, он выводит сообщение об ошибке и завершает работу.
- Скрипт присваивает переданный номер порта переменной
port. - Скрипт использует команду
timeoutдля установки таймаута в 3 секунды, а затем командуtcpdumpдля подсчета количества пакетов для указанного порта. Параметр-c 0сообщаетtcpdumpо том, что нужно захватить все пакеты, а фильтр"port $port"гарантирует, что будут учтены только пакеты для указанного порта. - Скрипт захватывает вывод команды
tcpdumpи подсчитывает количество строк с использованиемwc -l, что дает общее количество пакетов. - Наконец, скрипт выводит количество пакетов с помощью команды
echo "Packages: $packages".
Поздравляем! Вы успешно создали и протестировали скрипт netcheck.sh для мониторинга статуса сетевого общения. Не стесняйтесь дальнейшего исследования и модификации скрипта в соответствии с вашими потребностями.
Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



