Скрипт на 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 покажет существующие правила
Комментариев нет:
Отправить комментарий