├── data.csv - стандартный путь к файлу с входными данными
├── deployment
│ └── requirements.txt - зависимости проекта
├── Makefile - файл для упрощенного доступа к инструкциям
├── README.md - файл, который вы сейчас читаете
└── src - исходный код проекта
├── app.py - модуль который содержит основую связующую логику приложения
├── csv_reader.py - модуль чтения CSV-файла и его сериализации
├── dns_worker.py - модуль для работы с DNS
├── __init__.py
├── logger.py - модуль для вывода логов
├── main.py - главный скрипт, который запускает приложение
├── network_worker.py - модуль для работы с сетью
├── test_csv_reader.py - тест-кейсы для модуля чтения CSV-файла
├── test_mock_objects.py - тестовые объекты для Mock-тестирования
├── test_validators.py - тест-кейсы для валидаторов
└── validators.py - функции-валидаторы адресов и DNS-имен
- Скопируйте папку с проектом и перейдите в нее
- Установите пакетные зависимости -
pip3 install -r deployment/requirements.txt
- Запустите скрипт командой
python3 src/main.py
для Linux-систем иpython src/main.py
для Windows
Для систем Linux с установленным make
и поддержкой виртуального окружения доступен запуск при помощи make-команд
make venv
sudo make run
- Запускать скрипт необходимо либо из под root-пользователя на Linux, либо в терминале, запущенного с правами администратора на Windows
- При ином виде запуска (например, из IDE) необходимо поправить переменную окружения CSV_FILE или изменить путь к файлу в коде.
- Запуск скрипта из под систем Windows может занять дольше времени в силу скорости работы библиотеки
dnspython
- В случае если при запуске программы на хосте указан неправильный адрес DNS и после он будет изменен на сетевом интерфейсе, программе может потребоваться перезапуск.
Работа программы может быть кастомизирована следующими переменными окружения:
-
SOCKET_CONN_TIMEOUT - таймаут подключения к порту в секундах (по умолчанию - 5)
-
CSV_FILE - путь к файлу с данными (по умолчанию - data.csv)
-
CHECK_TIMEOUT - таймаут повторной проверки (по умочанию - 0)
Для проекта реализовано базовое тестирование механизма чтения и валидации данных. Все тестовые объекты и тест-кейсы расположены в файлах с наименованием test_*.py
.
Тесты можно запустить командой make test
или pytest