не работает скипт

Обсуждение общих вопросов, не касающихся настройки оборудования и ОС
Ответить
bogdanzykov
Сообщения: 9
Зарегистрирован: 24 янв 2018, 12:02

28 ноя 2018, 11:28

У менять есть скрипт для отправки бекап и експорт настроек на почту. Скрипт в терминале работает ,пользуюсь им давно. Делаю все вручную через ssh ,копирую и в терминал вставляю. Все нормально. Хотел автоматизировать этот процесс каждый день что бы делал бэкап. Создаю новое правильно в срипте, вставляю в него скрипт и нажимаю run script , и ничего не происходит.
Он вот таком формате, отдельные команды шлюдер выполняет , но этот почему то он не хочет выполнять. В чем дело не понятно.
:global backupfile ([/system identity get name]. ".backup")
:if ([/file find name=$backupfile] != "") do={/file rem $backupfile} ?
:delay 2s
:global logMessages;
:set logMessages ""
:foreach i in=[/log find ] do={
:set logMessages ($logMessages. [/log get $i time ]. " ");
:set logMessages ($logMessages. [/log get $i message ]);
:set logMessages ($logMessages. "\n")
}
/system backup save name=$backupfile
/export file=export
:delay 5s
:log info "///---->backup send...."


tool e-mail send to=**************** server=smtp.mail.ru port=25 start-tls=yes from=************* user=**************** password=****************************** subject="$[/system clock get date]..$[/system identity get name] backup " body="(BACKUP).$[/system clock get date].\n____________\n \nNAME.$[/system identity get name].\n___________\n \nCLOCK.$[/system clock get time].\n___________\n \nUptime.$[/system resource get uptime].\n___________\n \nFreememorry.$[/system resource get free-memory].\n___________\n \nTOTALmemorry.$[/system resource get total-hdd-space].\n___________\n \nnBad.$[/system resource get bad-blocks].\n___________\n \n%CPU-LOAD.$[/system resource get cpu-load]. " file=export.rsc,NIVA.backup


:log info "///---->backup send end..."
:delay 10s
:log info "///---->export send..."

:log info "///---->export send end..."
:delay 10s
/file remove $backupfile
:log info "///---->backup delet"
/file remove export.rsc
:log info "///---->export delet"
:log info "///---->backup end"
:log info "///---->


vqd
Модератор
Сообщения: 3503
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

28 ноя 2018, 16:41

Не мучайтесь

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

:local to vqd2012@gmail.com
:local date [/system clock get date ]
/system backup save dont-encrypt=yes name=bc
/export file=bc
:do {} while=(([:len [/file find name=bc.backup]] = 0) and ([:len [/file find name=bc.backup]] = 0 ) )
do {
/tool e-mail send to=$to subject="PROT - Mikrotik backup $date" file=bc.backup,bc.rsc
} on-error=(/log warning "Backup send error")
/log warning "Backup send"
Предварительно настроить SMTP клиента в tools - e-mail


Есть интересная задача и бюджет? http://mikrotik.site
Sertik
Сообщения: 367
Зарегистрирован: 15 сен 2017, 09:03

29 ноя 2018, 11:09

В скрипте vqd похоже есть косячок. Перед отправкой на почту у него там цикл проверяет записались ли файлы backup и script по длине их имени и считает, что если она не нулевая, значит записались. Но создание файлов бэкапа требует времени и на любых по мощности роутерах они не записываются мгновенно, их длина растет постепенно, особенно при создании "скриптового" варианта бэкапа. На роутерах со старыми камнями по 300-400 Мгц файл скриптового Backup`a может создаваться несколько минут.

Так что перед отправкой на почту уведомления нужно проверять не длину имени файла не равную нулю, а статус создания "finished". Вот тогда можно считать, что файлы настроек записались полностью (а то Вы уведомление отправили, а Вам питание отрубили скажем и файлы то Ваши до конца не записались или они вообще не успели просто записаться до конца, а Вы их уже отправили по почте).

Или я не прав ?


Чего не знаем то нагуглим
vqd
Модератор
Сообщения: 3503
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

29 ноя 2018, 12:09

В случае большой конфигурации скрипт не продолжит выполнение пока бекапы не сделаются, в случае если бекап маленький то функция бекапа успевает завершится но файл появляется несколько позже


Есть интересная задача и бюджет? http://mikrotik.site
Sertik
Сообщения: 367
Зарегистрирован: 15 сен 2017, 09:03

29 ноя 2018, 13:43

В случае с записью текстового скажем файла или его пересылкой командой /tool fetch можно воспользоваться проверкой, что файл переслан полностью типа:


:local logres [/file get [find name="$logftp.txt"] contents]
:if ($logres~"finished") do={
:global ftpSTS "done"}

Да и то, если длина файла не превышает 4К, а то ни фига такая штука не пройдет ....

А вот с файлами конфигураций я не уверен, что такая же штука прокатит, т.к. во-первых, они как-правило всегда больше 4К, а во-вторых нет там по завершению операции создания статуса "finished".
Просто тупо ставить большую задержку подстроенную под конкретный роутер не хочется. Есть ли цивилизованное решение проверки, что файлы конфигурации точно уже полностью записаны ?


Чего не знаем то нагуглим
bogdanzykov
Сообщения: 9
Зарегистрирован: 24 янв 2018, 12:02

29 ноя 2018, 21:17

vqd писал(а):
28 ноя 2018, 16:41
Не мучайтесь

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

:local to vqd2012@gmail.com
:local date [/system clock get date ]
/system backup save dont-encrypt=yes name=bc
/export file=bc
:do {} while=(([:len [/file find name=bc.backup]] = 0) and ([:len [/file find name=bc.backup]] = 0 ) )
do {
/tool e-mail send to=$to subject="PROT - Mikrotik backup $date" file=bc.backup,bc.rsc
} on-error=(/log warning "Backup send error")
/log warning "Backup send"
Предварительно настроить SMTP клиента в tools - e-mail

Ваш скрипт работает , спасибо. Но у меня проблема с микротом ,и на нем не пашут настройки которые устанавливаются в tools-email. При отправке сообщения пишет в логах invalid body. Если я эти же настройки пишу в коммандной строке все отправляет. Эти же настройки которые я устанавливал в e-mail на другом микроте , все отправляет. Я ваш скрипт поменял, добавил пароль , откуда и куда тогда работает. Спасибо. И так я гуглил много ,и так не нашел проблему. Может кто то встречался с такой.


vqd
Модератор
Сообщения: 3503
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

30 ноя 2018, 14:01

Я однозначно не могу ответить на ваш вопрос т.к. припоминаю что у меня такая проблема была довольно давно и именно так я ее тогда и решил. Единственное что могу предположить - это устаревшая РОС на проблемном микротик. Еще как вариант включите дебаг и посмотрите чего пишет


Есть интересная задача и бюджет? http://mikrotik.site
Ответить