Страницы

Поиск по вопросам

пятница, 9 ноября 2018 г.

Как автоматически вызывать обрыв ftp-соединения?

Скрипт на python в ходе работы скачивает файлы с ftp-сервера.
Процесс использует боевой ftp, и я не хотел бы усложнять процесс поднятием виртуалки с тестовым ftp - работа скрипта чувствительна к содержимому и мне придется настраивать обновление данных.
Нужно протестировать поведение при обрыве соединения в процессе скачивания. Желательно делать это автоматически, то есть вручную делать kill myftpserver или выдергивание шнура из сетевой карты — не вариант.
Таким образом, мне нужно либо обрывать текущее соединение прямо на тестовом сервере, либо поднимать прокси, на нем ждать соединения и обрывать через секунду-другую. Не представляю, как это реализовать. Нужно хотя бы название утилиты или команды, которой я смогу отловить текущее соединение и оборвать его, либо блокировать все текущие соединения на заданный ip.
Разумеется, тестирую я на тестовом инстансе. К нему есть root-доступ по ssh.


Ответ

Думаю проще всего делать это с помощью iptables. Просто запрещать передавать пакеты, можно попробовать действия REJECT для быстрого обрыва или DROP для слета по таймауту.
Простейшее правило (если задается на машине где тестируемая прога) типа iptables -I OUTPUT -d ip-ftp-сервера -j REJECT Добавлять можно простеньким скриптом на shell периодически делая задержки sleep, например.
Или усложнить само правило и задействовать например connbytes
sudo iptables -I OUTPUT -d ip-ftp-сервера -m \ connbytes --connbytes 10000 --connbytes-dir both \ --connbytes-mode bytes -j REJECT
должно оборвать соединение после прокачки по нему 10 килобайт.
Если с iptables до этого не работали ... iptables -I добавляет правило. iptables -D с точно такими же параметрами, как были при добавлении - удаляет. iptables -L -nv покажет существующие правила

Комментариев нет:

Отправить комментарий