Статистика сетевых пакетов данных

LinuxBeginner
Практиковаться сейчас

Введение

В этом проекте вы научитесь создавать скрипт на 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 секунды.

  1. Откройте текстовый редактор и создайте новый файл с именем netcheck.sh в директории /home/labex/project.
  2. Добавьте следующий код в файл 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"
  1. Сохраните файл netcheck.sh.

Тестируйте скрипт netcheck.sh

В этом шаге вы будете тестировать скрипт netcheck.sh, чтобы убедиться, что он работает как ожидается.

  1. Откройте терминал и перейдите в директорию /home/labex/project.
  2. Запустите скрипт netcheck.sh с аргументом номером порта 22:
sh /home/labex/project/netcheck.sh 22
  1. Скрипт должен вывести количество переданных и полученных пакетов на порту 22 за период в 3 секунды, например:
Packages: 2
  1. Попробуйте запустить скрипт с разными номерами портов, чтобы убедиться, что он работает правильно.

Разберитесь в скрипте netcheck.sh

В этом шаге вы будете разбираться в коде скрипта netcheck.sh.

  1. Скрипт начинается с символа #!, называемого shebang, и имеет строку #!/bin/zsh, которая указывает, что его следует выполнять с использованием оболочки Zsh.
  2. Скрипт проверяет, был ли передан аргумент с номером порта. Если нет, он выводит сообщение об ошибке и завершает работу.
  3. Скрипт присваивает переданный номер порта переменной port.
  4. Скрипт использует команду timeout для установки таймаута в 3 секунды, а затем команду tcpdump для подсчета количества пакетов для указанного порта. Параметр -c 0 сообщает tcpdump о том, что нужно захватить все пакеты, а фильтр "port $port" гарантирует, что будут учтены только пакеты для указанного порта.
  5. Скрипт захватывает вывод команды tcpdump и подсчитывает количество строк с использованием wc -l, что дает общее количество пакетов.
  6. Наконец, скрипт выводит количество пакетов с помощью команды echo "Packages: $packages".

Поздравляем! Вы успешно создали и протестировали скрипт netcheck.sh для мониторинга статуса сетевого общения. Не стесняйтесь дальнейшего исследования и модификации скрипта в соответствии с вашими потребностями.

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.

✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться