После обновления операционной системы с версии 9.3 до версии 10.3 у меня пропал порт xml ( /usr/local/bin/xml ). Новая версия xml2 не парсит файл выгрузки командой
/usr/local/bin/xml2 pyx /data/reestr/dump.xml | sort | uniq | grep ^- | sed ‘s,-,add list=blocklist address=,g;s,$,,g’ >> /d
Поиски xml ни к чему не привели, поэтому пришлось доработать скрипт на python (ссылка на оригинал). Из него я взял только этот кусок
1 2 3 4 5 |
xml = parse('/tcpdumps/rkn/dump.xml')
ip = xml.getElementsByTagName('ip')
f = open('/tcpdumps/rkn/action.txt', 'w')
for node in ip:
f.write(node.childNodes[0].nodeValue + '\n')
|
Изменим его на вид
1 2 3 4 5 6 7 8 |
from xml.dom.minidom import *
import os
os.remove('mt_zapretip.auto.rscNS')
f=open('mt_zapretip.auto.rscNS', 'a')
xml = parse('dump.xml')
ips = xml.getElementsByTagName('ip')
for ip in ips:
f.write('/ip firewall address-list add list=blocklist address=%s;\n' % ip.childNodes[0].nodeValue)
|
где mt_zapretip.auto.rscNS — пустой файл, в который попадут неотсортированные команды для выполнения на сервере Microtik. Дополнительная сортировка требуется из-за того, что в файл часто попадают несколько одинаковых команд с одинаковыми ip. Если Микротик при выполнении скрипта попадет на такие команды, то выполнение скрипта завершится.
Скрипт сохраняем под именем extract.py
Создаем еще один скрипт script.sh и добавляем в него следующие команды
1 2 3 4 5 6 7 8 9 |
#!/bin/sh cd /data/reestr rm mt_zapretip.auto.rsc rm mt_zapretip.auto.rscPR touch mt_zapretip.auto.rsc touch mt_zapretip.auto.rscPR sort -u mt_zapretip.auto.rscNS > mt_zapretip.auto.rscPR echo "/ip firewall address-list remove numbers=[find list=blocklist];" > mt_zapretip.auto.rsc cat mt_zapretip.auto.rscPR >> mt_zapretip.auto.rsc<span style="color: #ff6600;">/usr/local/bin/lftp -u utm, -e "put /data/reestr/mt_zapretip.auto.rsc ; bye" 10.10.0.1 |
где mt_zapretip.auto.rsc — итоговый файл для Микротика. mt_zapretip.auto.rsc — промежуточный файл. Он необходим для добавления в начало скрипта команды удаления всех ай-пи из списка блокировки на микротике. 10.10.0.1 — ip адрес сервера с Микротиком. На сервере должен быть разрешен доступ по tftp
После отправления скрипта на сервер он запустится автоматически.
Скрипты необходимо добавить в Cron ( crontab -e )
10 * * * * cd /data/reestr/; /usr/local/bin/python ./extract.py 12 * * * * cd /data/reestr/; ./script.sh Для получения выгрузки используем скрипт zapret_checker.py (оригинал).
Комментировать