Closed homocomputeris closed 6 years ago
Хотел создать issue, но напишу для начала тут.
Попробуйте в этом самом скрипте после /tool fetch ...
добавить delay 1
Есть такая странная особенность, что fetch
уже выполнился, а файл в системе ещё не появился. И тогда /file find
его не может найти.
@Winand , спасибо за совет, но так тоже не работает:
:local hostScriptUrl "https://stopad.cgood.ru/script/source?format=routeros&version=2.0.2&sources_urls=http%3A%2F%2Fsbc.io%2Fhosts%2Falternates%2Ffakenews-gambling-porn%2Fhosts&excluded_hosts=localhost";
:local scriptName "stop_ad.script";
:local backupFileName "before_stopad";
:local logPrefix "[StopAD]";
do {
/tool fetch check-certificate=no mode=https url=$hostScriptUrl dst-path=("./".$scriptName);
:delay 30s;
:if ([:len [/file find name=$scriptName]] > 0) do={
/system backup save name=$backupFileName;
:delay 1s;
:if ([:len [/file find name=($backupFileName.".backup")]] > 0) do={
/ip dns static remove [/ip dns static find comment=ADBlock];
/import file-name=$scriptName;
/file remove $scriptName;
:log info "$logPrefix AD block script imported, backup file (\"$backupFileName.backup\") created";
} else={
:log warning "$logPrefix Backup file not created, importing AD block script stopped";
}
} else={
:log warning "$logPrefix AD block script not downloaded, script stopped";
}
} on-error={
:log warning "$logPrefix AD block script download FAILED";
}
если откроете в браузере ссылку, прописанную в скрипте, то увидите, что отдаёт сервер:
## Sources cache state: enabled, *response* cache lifetime: 30
## Error :: http://sbc.io/hosts/alternates/fakenews-gambling-porn/hosts :: The file is too big (detected by header "Content-Length")
## Script generated 2018-08-07 16:42:36
## Script format: "routeros"
##
## Hosts list sources:
## > http://sbc.io/hosts/alternates/fakenews-gambling-porn/hosts
##
## Excluded hosts:
## > localhost
Попробуйте всё же в первом скрипте поставить задержку после fetch
. Только 30 секунд - это как-то перебор имхо.)
Даже можно сделать чуть правильнее с поллингом
# if a file is just created it is not accessible immediately
while ([len [/file find name=("./".$scriptName)]] = 0) do={delay 0.1}
Скрипт не выдает никаких результатов, статические маршруты не добавляются