А посоветуйте задачки на скрипты

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Takie_dela
Сообщения: 4
Зарегистрирован: 03 ноя 2016, 12:27

Здравствуйте!

Я вот новичок в микротиках, недавно осилил Scripts на wiki.mikrotik, поднял unetlab с образом routeros. И стал думать - какие задачи бы скриптовые (а впрочем,и не только их) мне порешать. В интернете не нашёл такого сборника задач =) Может, у местных гуру есть идеи? Буду рад всем!


TauRus_tj
Сообщения: 0
Зарегистрирован: 08 ноя 2016, 07:30
Откуда: Tajikistan, Khujand
Контактная информация:

Добрый день. Прям задачи? Может я понял не правильно, но все-же)) Есть идея, отправлять логи с микротика на яндекс.диск, как воплотить? Причем дело это производить 1 раз в 24 часа, лог лежит в каталоге /flash log.0.txt, после его отправки/передачи удалить старый файл, чтобы не грузить микротик файлом, как-то так...

Идея в порядке алгоритма:
1. Проверка на наличие пинга до ya.ru, если есть, то шаг №2, если нет, еще 3 попытки, если же опять нет, то шаг №4 или стоп скрипта
2. Отправка/передача лог файла на почту и яндекс диск (почта используется как резерв)
3. Удаление лог файла с каталога
4. Ребут


Takie_dela
Сообщения: 4
Зарегистрирован: 03 ноя 2016, 12:27

TauRus_tj писал(а):Добрый день. Прям задачи? Может я понял не правильно, но все-же)) Есть идея, отправлять логи с микротика на яндекс.диск, как воплотить? Причем дело это производить 1 раз в 24 часа, лог лежит в каталоге /flash log.0.txt, после его отправки/передачи удалить старый файл, чтобы не грузить микротик файлом, как-то так...

Идея в порядке алгоритма:
1. Проверка на наличие пинга до ya.ru, если есть, то шаг №2, если нет, еще 3 попытки, если же опять нет, то шаг №4 или стоп скрипта
2. Отправка/передача лог файла на почту и яндекс диск (почта используется как резерв)
3. Удаление лог файла с каталога
4. Ребут


Ага, вы верно всё поняли =) Спасибо за идею!


gmx
Модератор
Сообщения: 3290
Зарегистрирован: 01 окт 2012, 14:48

И не только логи, а еще и, например, конфиг...


TauRus_tj
Сообщения: 0
Зарегистрирован: 08 ноя 2016, 07:30
Откуда: Tajikistan, Khujand
Контактная информация:

gmx писал(а):И не только логи, а еще и, например, конфиг...

Да, и желательно конфиг_)
вот можно использовать ссылку для примера:
https://yadi.sk/d/xSoXBS6nyHw2L

Если понадобиться, могу дать логин и пароль, с полным доступом

И еще! При отправки/передачи файла добавлять в его название дату и время, чтоб не затирал уже отправленные/переданные


TauRus_tj
Сообщения: 0
Зарегистрирован: 08 ноя 2016, 07:30
Откуда: Tajikistan, Khujand
Контактная информация:

Takie_dela писал(а):
TauRus_tj писал(а):Добрый день. Прям задачи? Может я понял не правильно, но все-же)) Есть идея, отправлять логи с микротика на яндекс.диск, как воплотить? Причем дело это производить 1 раз в 24 часа, лог лежит в каталоге /flash log.0.txt, после его отправки/передачи удалить старый файл, чтобы не грузить микротик файлом, как-то так...

Идея в порядке алгоритма:
1. Проверка на наличие пинга до ya.ru, если есть, то шаг №2, если нет, еще 3 попытки, если же опять нет, то шаг №4 или стоп скрипта
2. Отправка/передача лог файла на почту и яндекс диск (почта используется как резерв)
3. Удаление лог файла с каталога
4. Ребут


Ага, вы верно всё поняли =) Спасибо за идею!

Вот скрипт, которым сам пользуюсь (он поставлен на запуск при ребуте), в нем отправка логов, бэкапов и конфига:
 
{
:delay 10;
:log info "Starting LOG Script...";
:local sysname [/system identity get name];
:local sysver [/system package get system version];
:log info "Flushing DNS cache...";
/ip dns cache flush;
:delay 2;
:log info "Deleting last LOGs...";
:foreach i in=[/file find] do={:if ([:typeof [:find [/file get $i name] \
"$sysname-LOG-"]]!="nil") do={/file remove $i}};
:delay 2;
:local smtpserv [:resolve "smtp.yandex.ru"];
:local Eaccount "USER@YANDEX.RU";
:local pass "PASSWORD";
:log info "Creating new LOG file...";
:local LOGfile ("$sysname-LOG-" . \
[:pick [/system clock get date] 7 11] . [:pick [/system \
clock get date] 0 3] . [:pick [/system clock get date] 4 6]);
/log print file=$LOGfile;
:delay 2;
:log info "Sending LOG file via E-mail...";
/tool e-mail send from="<$Eaccount>" to=$Eaccount server=$smtpserv \
port=587 user=$Eaccount password=$pass start-tls=yes file=$LOGfile \
subject=("$sysname LOG file (" . [/system clock get date] . ")") \
body=("$sysname LOG file see in attachment.\nRouterOS version: \
$sysver\nTime and Date stamp: " . [/system clock get time] . " " . \
[/system clock get date]);
:delay 10;
:log info "Starting Backup Script...";
:log info "Deleting last Backups...";
:foreach i in=[/file find] do={:if ([:typeof [:find [/file get $i name] \
"$sysname-backup-"]]!="nil") do={/file remove $i}};
:delay 2;
:log info "Creating new Full Backup file...";
:local backupfile ("$sysname-backup-" . \
[:pick [/system clock get date] 7 11] . [:pick [/system \
clock get date] 0 3] . [:pick [/system clock get date] 4 6] . ".backup");
/system backup save name=$backupfile;
:delay 2;
:log info "Sending Full Backup file via E-mail...";
/tool e-mail send from="<$Eaccount>" to=$Eaccount server=$smtpserv \
port=587 user=$Eaccount password=$pass start-tls=yes file=$backupfile \
subject=("$sysname Full Backup (" . [/system clock get date] . ")") \
body=("$sysname full Backup file see in attachment.\nRouterOS version: \
$sysver\nTime and Date stamp: " . [/system clock get time] . " " . \
[/system clock get date]);
:delay 5;
:log info "Creating new Setup Script file...";
:local exportfile ("$sysname-backup-" . \
[:pick [/system clock get date] 7 11] . [:pick [/system \
clock get date] 0 3] . [:pick [/system clock get date] 4 6] . ".rsc");
/export verbose file=$exportfile;
:delay 2;
:log info "Sending Setup Script file via E-mail...";
/tool e-mail send from="<$Eaccount>" to=$Eaccount server=$smtpserv \
port=587 user=$Eaccount password=$pass start-tls=yes file=$exportfile \
subject=("$sysname Setup Script Backup (" . [/system clock get date] . \
")") body=("$sysname Setup Script file see in attachment.\nRouterOS \
version: $sysver\nTime and Date stamp: " . [/system clock get time] . " \
" . [/system clock get date]);
:delay 5;
:log info "All LOGs and System Backups emailed successfully.\nBackuping completed.";
}

А вот сама отправка логов с удалением файла flash/log.0.txt и ребута по завершению скрипта, скрипт актуален при условии, что у вас включен запись лога на диск:
 
{
:log info "Starting LOG Script...";
:local sysname [/system identity get name];
:local sysver [/system package get system version];
:log info "Flushing DNS cache...";
/ip dns cache flush;
:delay 2;
:log info "Deleting last LOGs...";
:foreach i in=[/file find] do={:if ([:typeof [:find [/file get $i name] \
"$sysname-LOG-"]]!="nil") do={/file remove $i}};
:delay 2;
:local smtpserv [:resolve "smtp.yandex.ru"];
:local Eaccount "USER@YANDEX.RU";
:local pass "PASSWORD";
:log info "Creating new LOG file...";
:local LOGfile ("$sysname-LOG-" . \
[:pick [/system clock get date] 7 11] . [:pick [/system \
clock get date] 0 3] . [:pick [/system clock get date] 4 6]);
/log print file=$LOGfile;
:delay 2;
:log info "Sending LOG file via E-mail...";
/tool e-mail send from="<$Eaccount>" to=$Eaccount server=$smtpserv \
port=587 user=$Eaccount password=$pass start-tls=yes file=$LOGfile \
subject=("$sysname LOG file (" . [/system clock get date] . ")") \
body=("$sysname LOG file see in attachment.\nRouterOS version: \
$sysver\nTime and Date stamp: " . [/system clock get time] . " " . \
[/system clock get date]);
:delay 5;
:log info "Sending LOG file complete!!!";
:delay 15;
/file remove flash/log.0.txt
:delay 2;
/system reboot
}


Осталось привинтить сюда проверку на пинг, и яндекс диск :-):


Аватара пользователя
Kato
Сообщения: 271
Зарегистрирован: 17 май 2016, 04:23
Откуда: Primorye

не забудьте еще "кофе в постель" :-) - очень важная задача)


TauRus_tj
Сообщения: 0
Зарегистрирован: 08 ноя 2016, 07:30
Откуда: Tajikistan, Khujand
Контактная информация:

Kato писал(а):не забудьте еще "кофе в постель" :-) - очень важная задача)

Ну, кому-как) Кому кофе в постель в скрипте, а у кого-то это всё наяву :hi_hi_hi:


TauRus_tj
Сообщения: 0
Зарегистрирован: 08 ноя 2016, 07:30
Откуда: Tajikistan, Khujand
Контактная информация:

В продолжении темы: яндекс диск поддерживает webdav, можно ли это как-то использовать для организации отправки с микротика на яндекс диск?
https://yandex.ru/support/disk/webdav.html


Аватара пользователя
Kato
Сообщения: 271
Зарегистрирован: 17 май 2016, 04:23
Откуда: Primorye

TauRus_tj писал(а):В продолжении темы: яндекс диск поддерживает webdav, можно ли это как-то использовать для организации отправки с микротика на яндекс диск?
https://yandex.ru/support/disk/webdav.html

изначально и надо сделать, т.е. использовать вебдав


Ответить