Окт 29

После обновления операционной системы с версии 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 (оригинал).

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