Не импортируется из файла rsc

Автоматизация при помощи встроенного скриптового языка и RouterOS API
iiwanc
Сообщения: 4
Зарегистрирован: 21 мар 2022, 11:29

Не импортируется из файла rsc

Сообщение iiwanc »

Здравствуйте!
Простите, если не сюда пишу.

С Микротик знаком несколько лет, но скрипты не писал. Таких задач передо мной не было.
Читал информацию в интернете. Но в программировании не силен.
Буду рад, если поправите мои скрипты и, возможно, мое понимание, как это работает.

Мне необходимо составить банлист из IP и заблокировать эти адреса на Микротике.
MIKROTIK RB4011IGS+5HACQ2HND-IN с RouterOS v6.45.9 (long-term)

Делаю скриптом на FTP сервере:

Код: Выделить всё

@echo off
del F:\ftpsait\ftp\torlist.rsc
@echo off
powershell -executionpolicy bypass -command "(Invoke-WebRequest https://www.dan.me.uk/torlist/).content.split() | foreach -begin {" ^
    "@('/system logging disable 0', '/ip firewall address-list remove [find where list="""torlist"""]','/ip firewall address-list') | Out-File 'F:\ftpsait\ftp\torlist.rsc' -Append -Encoding utf8" ^
        "} -Process {" ^
            """"add address=$($_) list=torlist timeout=2d""" | Out-File 'F:\ftpsait\ftp\torlist.rsc' -Append -Encoding utf8" ^
        "} -end {" ^
            """"/system logging enable 0""" | Out-File 'F:\ftpsait\ftp\torlist.rsc' -Append -Encoding utf8" ^
        "}"
exit
Список получается вида:

Код: Выделить всё

/system logging disable 0
/ip firewall address-list remove [find where list="torlist"]
/ip firewall address-list
add address=1.168.3.245 list=torlist timeout=2d
add address=100.12.87.114 list=torlist timeout=2d
add address=100.14.174.187 list=torlist timeout=2d
add address=100.14.23.208 list=torlist timeout=2d
add address=100.34.61.24 list=torlist timeout=2d
/system logging enable 0
Загружаю банлист на Микротик:

Код: Выделить всё

/tool fetch address=198.0.0.99 \ [email protected] mode=ftp password=33953395pP+ src-path=/ftp/torlist.rsc port=21 \ host="" keep-result=yes;
:log info "Zagruzili Torlist";
Банлист загружается. Вижу его в Микротике, но не могу импортировать.
Ввожу в терминале:

Код: Выделить всё

/import file-name=torlist.rsc
Результат:

Код: Выделить всё

expected command name (line 1 column 1)
Не подскажите причину такого поведения?
Буду благодарен советам.
Аватара пользователя
Chupaka
Сообщения: 4088
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Не импортируется из файла rsc

Сообщение Chupaka »

Приветствую.

Видимо, у вас в начале файла BOM - RouterOS такого не понимает. Попробуйте "-Encoding UTF8NoBOM" (доступно с шестой версии PowerShell)
iiwanc
Сообщения: 4
Зарегистрирован: 21 мар 2022, 11:29

Re: Не импортируется из файла rsc

Сообщение iiwanc »

Chupaka писал(а): 21 мар 2022, 13:12 Приветствую.

Видимо, у вас в начале файла BOM - RouterOS такого не понимает. Попробуйте "-Encoding UTF8NoBOM" (доступно с шестой версии PowerShell)
Спасибо за совет, но непомогло.
У меня PowerShell версии 5.1
Тоже грешу на кодировку, но не знаю, как исправить
iiwanc
Сообщения: 4
Зарегистрирован: 21 мар 2022, 11:29

Re: Не импортируется из файла rsc

Сообщение iiwanc »

Да, дело в кодировке.
В Notepad++ поменял кодировку файла и загружается теперь.
Но не пойму, какую кодировку указать в скрипте.
Аватара пользователя
Chupaka
Сообщения: 4088
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Не импортируется из файла rsc

Сообщение Chupaka »

Если у вас там только английские команды - попробуйте ASCII
iiwanc
Сообщения: 4
Зарегистрирован: 21 мар 2022, 11:29

Re: Не импортируется из файла rsc

Сообщение iiwanc »

Помогло -Encoding default