Создаем на своем ПК пустой файл list.txt. Перетаскиваем его в свой микротик.(это нужно сделать единоразово). Потом запускаешь скрипт:
Его в шедуллер! Этот скрипт передаст файл на другой микротик с нужными данными(в нужном формате!), очистит переменную, перезапишет файл list.txt с пустым значением(т.е. все подготовит для следующего выполнения).
На принимающей стороне:
:global iplist;Вместо :global iplist; можно использовать локальную переменную, тогда очищать ее каждый раз не надо, строчка :set iplist; не нужна!
:foreach i in=[/ip firewall address-list find where list=test] do={ :set iplist ($iplist . "\r\n" . [/ip firewall address-list get $i address])};
/file set [/file find name=list.txt] contents="$iplist";
delay 4;
/tool fetch mode=ftp upload=yes address=0.0.0.0 port=2121 user=admin password=admin ascii=yes src-path=list.txt dst-path=list.txt
delay 6;
:set iplist;
/file remove list.txt;
/file print file=list.txt;
delay 6;
/file set list.txt contents=""
Его в шедуллер! Этот скрипт передаст файл на другой микротик с нужными данными(в нужном формате!), очистит переменную, перезапишет файл list.txt с пустым значением(т.е. все подготовит для следующего выполнения).
На принимающей стороне:
:if ( [/file get [/file find name=list.txt] size] > 0 ) do={:local lineEnd 1 и :local lastEnd [ :tonum 1 ] ставим 1, потому-как файл list.txt с первой пустой строчкой. Такой файл получается после отработки первого скрипта.
/ip firewall address-list remove [/ip firewall address-list find list=suspendedaccts]
:local content [/file get [/file find name=list.txt] contents] ;
:local contentLen [ :len $content ] ;
:put ( "=>" . $content . "<=" )
:local lineEnd 1
:local line ""
:local lastEnd [ :tonum 1 ]
:do {
:set line [ :pick $content $lastEnd [ :find $content "\r\n" $lastEnd ] ]
:set lineEnd [:find $content "\n" $lastEnd ] ;
:put "lineEnd=$lineEnd< - lastEnd=$lastEnd - line=$line<"
:if ( [ :len $content ] = 0 ) do={
:put "UNIX"
:set line [ :pick $content $lastEnd [ :find $content "\r\n" $lastEnd ] ]
:set lineEnd [:find $content "\n" $lastEnd ] ;
}
:set lastEnd ( $lineEnd + 1 ) ;
:if ( [:pick $line 0 1] != "\n" ) do={
:put ">$line<"
:if ( [:len $line ] > 0 ) do={ /ip firewall address-list add list=suspendedaccts address=$line }
}
} while ($lineEnd < $contentLen)
}
Комментариев нет:
Отправить комментарий