У меня есть скрипт, который скачивает текстовый файл с удалённого сайта. Затем он обрабатывает файл построчно, добавляя каждую запись в список IP-адресов «walled-garden». Однако динамические записи, которые должны быть добавлены, не попадают ни в «walled-garden», ни в фильтры брандмауэра. Я следую примеру, описанному здесь: . Когда я запускаю команду вручную, она добавляет соответствующие записи в брандмауэр, чтобы открыть соединение. Но когда я запускаю через скрипт, он просто добавляет запись в IP-список «walled-garden». Вот скрипт, который не работает:
/tool fetch url="http://mydomain.com/walldownload.php?ap=$[/system identity get name]" mode=http dst-path=wall.txt
:foreach entry in=[/ip hotspot walled-garden ip find comment=walltemp] do={
/ip hotspot walled-garden ip remove $entry
}
:if ( [/file get [/file find name=wall.txt] size] > 0 ) do={
:global content [/file get [/file find name=wall.txt] contents] ;
:global contentLen [ :len $content ] ;
:global lineEnd 0;
:global line "";
:global lastEnd 0;
:do {
:set lineEnd [:find $content "\n" $lastEnd ] ;
:set line [:pick $content $lastEnd $lineEnd] ;
:set lastEnd ( $lineEnd + 1 ) ;
:if ( [:pick $line 0 1] != "#" ) do={
:local entry [:pick $line 0 ($lineEnd -1) ]
:if ( [:len $entry ] > 0 ) do={
/ip hotspot walled-garden ip add action=accept disabled=no dst-host="$entry" comment=walltemp server=hotspot1;
}
}
} while ($lineEnd < $contentLen)
}
Вот тестовый скрипт, который я запускаю вручную и он работает:
/ip hotspot walled-garden ip add action=accept disabled=no dst-host="yahoo.com" comment=walltemp server=hotspot1;
Кто-нибудь может помочь с этой проблемой?
/tool fetch url="http://mydomain.com/walldownload.php?ap=$[/system identity get name]" mode=http dst-path=wall.txt
:foreach entry in=[/ip hotspot walled-garden ip find comment=walltemp] do={
/ip hotspot walled-garden ip remove $entry
}
:if ( [/file get [/file find name=wall.txt] size] > 0 ) do={
:global content [/file get [/file find name=wall.txt] contents] ;
:global contentLen [ :len $content ] ;
:global lineEnd 0;
:global line "";
:global lastEnd 0;
:do {
:set lineEnd [:find $content "\n" $lastEnd ] ;
:set line [:pick $content $lastEnd $lineEnd] ;
:set lastEnd ( $lineEnd + 1 ) ;
:if ( [:pick $line 0 1] != "#" ) do={
:local entry [:pick $line 0 ($lineEnd -1) ]
:if ( [:len $entry ] > 0 ) do={
/ip hotspot walled-garden ip add action=accept disabled=no dst-host="$entry" comment=walltemp server=hotspot1;
}
}
} while ($lineEnd < $contentLen)
}
Вот тестовый скрипт, который я запускаю вручную и он работает:
/ip hotspot walled-garden ip add action=accept disabled=no dst-host="yahoo.com" comment=walltemp server=hotspot1;
Кто-нибудь может помочь с этой проблемой?
