Страница 4 из 5
Re: Backup настроек на почту
Добавлено: 26 янв 2018, 11:30
enzain
felcons писал(а):сильно ногами не пинайте.
в код скрипта вставил вот те две строки
[/interface get ether5 rx-byte]
[/interface get ether5 tx-byte]
ставил там где уже body, где тело письма, и скрипт вообще отказался работать.
В телнете пробовал вводить те строки то данных никаких не выдавалось.
Не выдадутся.
Сначала в переменную надо записать, потом её использовать.
Re: Backup настроек на почту
Добавлено: 29 янв 2018, 15:41
felcons
сделал в форме переменных и не работает.
редактировал через веб интерфейс в разделе system scripts, в поле sources.
Вначале, как положено ставил 8 пробелов и всё описал.
получился вот такой скрипт:
Код: Выделить всё
:local PointLogin "";
:local PointPassword "";
:local MailTo "mymail@ukr.net";
:local MailSubject "MikroTik Backup";
:local CurrentTime [/system clock get time];
:local CurrentDate [/system clock get date];
:local Hour [:tostr [:pick $CurrentTime 0 2]];
:local Min [:tostr [:pick $CurrentTime 3 5]];
:local Day [:tostr [:pick $CurrentDate 4 6]];
:local Month [:tostr [:pick $CurrentDate 0 3]];
:local Year [:tostr [:pick $CurrentDate 7 [:len $CurrentDate]]];
:do {
:local FileName ([/system identity get name]."__$Day_$Month_$Year__$Hour_$Min.backup");
/system backup save name=$FileName;
:log info "Backup file ($FileName) created success";
:do {
: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")
}
/tool e-mail send server=195.42.130.17 port=25 start-tls=no user=$PointLogin \
password=$PointPassword to=$MailTo from="mysendmail@point.lviv.ua" \
subject=($MailSubject." ($Day/$Month/$Year $Hour:$Min)") \
body=( \
"System information:". \
"\n____________________\n \n". \
"Board name: ".[/system resource get platform]." ".[/system resource get board-name]."\n". \
"Version: ".[/system resource get version]."\n". \
"CPU: ".[/system resource get cpu]." (load ".[/system resource get cpu-load]."%)\n". \
"Free HDD space: ".[/system resource get free-hdd-space]." (total: ".[/system resource get total-hdd-space].")\n". \
"Free memory: ".[/system resource get free-memory]." (total: ".[/system resource get total-memory].")\n". \
"Uptime: ".[/system resource get uptime]. \
"\n \n \n". \
"Last log messages:". \
"\n____________________\n \n". \
"Send Bytes:".[interface ethernet get ether5 tx-bytes]. "\n". \
"Received bytes".[interface ethernet get ether5 rx-bytes]. "\n". \
"\n____________________\n \n". \
$logMessages \
) file=$FileName;
#delete old log
/system logging action set memory memory-lines=1
/system logging action set memory memory-lines=65000
:log info "System log cleared by email-log-backup script...";
:log info "Mail with backup sending success";
:do {
:delay 3s;
/file remove $FileName;
:log info "Remove backup file success";
} on-error={
:log warning "Cannot remove backup file $FileName";
};
} on-error={
:log warning "Email sending failed!";
};
} on-error={
:log error "Backup creation failed!";
};
Re: Backup настроек на почту
Добавлено: 12 фев 2018, 13:31
felcons
Я пробовал уже по-разному задавать в скрипте вот таких две строки, как и было написано
Код: Выделить всё
[interface ethernet get ether5 rx-bytes]
[interface ethernet get ether5 tx-bytes]
как его проверить работает ли оно вообще? может как-то в телнете можна проверить?
Re: Backup настроек на почту
Добавлено: 13 фев 2018, 08:20
enzain
felcons писал(а): ↑12 фев 2018, 13:31
Я пробовал уже по-разному задавать в скрипте вот таких две строки, как и было написано
Код: Выделить всё
[interface ethernet get ether5 rx-bytes]
[interface ethernet get ether5 tx-bytes]
как его проверить работает ли оно вообще? может как-то в телнете можна проверить?
:global rx [interface ethernet get ether5 rx-bytes]
:global tx [interface ethernet get ether5 tx-bytes]
system script environment print
Re: Backup настроек на почту
Добавлено: 14 фев 2018, 13:49
felcons
Ну уже и в переменные задал и тогда вообще инфа не выдаётся в почту.
Что ж уже не так.
всё описал руками и переменные задал.
и скрипт вот такой:
Код: Выделить всё
:local PointLogin "";
:local PointPassword "";
:local MailTo "andrij@ukr.net";
:local MailSubject "MikroTik Backup";
:local CurrentTime [/system clock get time];
:local CurrentDate [/system clock get date];
:local Hour [:tostr [:pick $CurrentTime 0 2]];
:local Min [:tostr [:pick $CurrentTime 3 5]];
:local Day [:tostr [:pick $CurrentDate 4 6]];
:local Month [:tostr [:pick $CurrentDate 0 3]];
:local Year [:tostr [:pick $CurrentDate 7 [:len $CurrentDate]]];
:do {
:local FileName ([/system identity get name]."__$Day_$Month_$Year__$Hour_$Min.backup");
/system backup save name=$FileName;
:log info "Backup file ($FileName) created success";
:do {
: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")
}
:global x1 [interface ethernet get ether1 tx-bytes];
:global x2 [interface ethernet get ether1 rx-bytes];
/tool e-mail send server=195.42.130.17 port=25 start-tls=no user=$PointLogin \
password=$PointPassword to=$MailTo from="felcons@point.lviv.ua" \
subject=($MailSubject." ($Day/$Month/$Year $Hour:$Min)") \
body=( \
"System information:". \
"\n____________________\n \n". \
"Board name: ".[/system resource get platform]." ".[/system resource get board-name]."\n". \
"Version: ".[/system resource get version]."\n". \
"CPU: ".[/system resource get cpu]." (load ".[/system resource get cpu-load]."%)\n". \
"Free HDD space: ".[/system resource get free-hdd-space]." (total: ".[/system resource get total-hdd-space].")\n". \
"Free memory: ".[/system resource get free-memory]." (total: ".[/system resource get total-memory].")\n". \
"Uptime: ".[/system resource get uptime]. \
"\n \n \n". \
"send bytes: $x1 \n" \
"received bites: $x2 \n" \
"\n \n \n". \
"Last log messages:". \
"\n____________________\n \n". \
$logMessages \
) file=$FileName;
:log info "Mail with backup sending success";
:do {
:delay 3s;
/file remove $FileName;
:log info "Remove backup file success";
} on-error={
:log warning "Cannot remove backup file $FileName";
};
} on-error={
:log warning "Email sending failed!";
};
} on-error={
:log error "Backup creation failed!";
};
Re: С использованием почты Yandex
Добавлено: 23 апр 2018, 15:54
Expressimo
purumtumtum писал(а): ↑31 июл 2016, 11:33
В моем случае было удобнее отправлять бэкап с помощью почтовой учетки на яндексе. Скрипт собран из целой кучи других. Его особенности:
- Корректная работа вне зависимости от наличия и настроек SMTP сервера - письма ходят через почтовый сервер Яндекса;
- Корректное имя бэкап-файла (имя_железки + дата + время);
- Критичные методы завернуты в обработчики ошибок, что значительно упрощает отладку и гарантирует четкую последовательность действий;
- Сообщение, приходящее на почту содержит не только файл бэкапа и актуальную информацию о состоянии железки, но и лог событий самой железки;
- Не оставляет за собой старых бэкап-файлов, сохраняя свободное место.
Код: Выделить всё
:local YandexLogin "YANDEX_MAILBOX_NAME@yandex.ru";
:local YandexPassword "YANDEX_MAILBOX_PASSWORD";
:local MailTo "YOUR_MAILBOX_NAME@gmail.com";
:local MailSubject "MikroTik Backup";
:local CurrentTime [/system clock get time];
:local CurrentDate [/system clock get date];
:local Hour [:tostr [:pick $CurrentTime 0 2]];
:local Min [:tostr [:pick $CurrentTime 3 5]];
:local Day [:tostr [:pick $CurrentDate 4 6]];
:local Month [:tostr [:pick $CurrentDate 0 3]];
:local Year [:tostr [:pick $CurrentDate 7 [:len $CurrentDate]]];
:do {
:local FileName ([/system identity get name]."__$Day_$Month_$Year__$Hour_$Min.backup");
/system backup save name=$FileName;
:log info "Backup file ($FileName) created success";
:do {
: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")
}
/tool e-mail send server=213.180.204.38 port=587 start-tls=yes user=$YandexLogin \
password=$YandexPassword to=$MailTo from=$YandexLogin \
subject=($MailSubject." ($Day/$Month/$Year $Hour:$Min)") \
body=( \
"System information:". \
"\n____________________\n \n". \
"Board name: ".[/system resource get platform]." ".[/system resource get board-name]."\n". \
"Version: ".[/system resource get version]."\n". \
"CPU: ".[/system resource get cpu]." (load ".[/system resource get cpu-load]."%)\n". \
"Free HDD space: ".[/system resource get free-hdd-space]." (total: ".[/system resource get total-hdd-space].")\n". \
"Free memory: ".[/system resource get free-memory]." (total: ".[/system resource get total-memory].")\n". \
"Uptime: ".[/system resource get uptime]. \
"\n \n \n". \
"Last log messages:". \
"\n____________________\n \n". \
$logMessages \
) file=$FileName;
:log info "Mail with backup sending success";
:do {
:delay 3s;
/file remove $FileName;
:log info "Remove backup file success";
} on-error={
:log warning "Cannot remove backup file $FileName";
};
} on-error={
:log warning "Email sending failed!";
};
} on-error={
:log error "Backup creation failed!";
};
Время от времени его немного дописываю, но этот вариант исправно работает уже несколько лет.
А как доработать этот скрипт, чтобы вместе с "полным" бэкапом делался и посылался по почте также бэкап конфигурации (.rsc), а в конце письма отображались не последние сообщения, а только определённые, например login failure?
Re: С использованием почты Yandex
Добавлено: 19 мар 2019, 10:39
mousesport007
Expressimo писал(а): ↑23 апр 2018, 15:54
purumtumtum писал(а): ↑31 июл 2016, 11:33
В моем случае было удобнее отправлять бэкап с помощью почтовой учетки на яндексе. Скрипт собран из целой кучи других. Его особенности:
- Корректная работа вне зависимости от наличия и настроек SMTP сервера - письма ходят через почтовый сервер Яндекса;
- Корректное имя бэкап-файла (имя_железки + дата + время);
- Критичные методы завернуты в обработчики ошибок, что значительно упрощает отладку и гарантирует четкую последовательность действий;
- Сообщение, приходящее на почту содержит не только файл бэкапа и актуальную информацию о состоянии железки, но и лог событий самой железки;
- Не оставляет за собой старых бэкап-файлов, сохраняя свободное место.
Код: Выделить всё
:local YandexLogin "YANDEX_MAILBOX_NAME@yandex.ru";
:local YandexPassword "YANDEX_MAILBOX_PASSWORD";
:local MailTo "YOUR_MAILBOX_NAME@gmail.com";
:local MailSubject "MikroTik Backup";
:local CurrentTime [/system clock get time];
:local CurrentDate [/system clock get date];
:local Hour [:tostr [:pick $CurrentTime 0 2]];
:local Min [:tostr [:pick $CurrentTime 3 5]];
:local Day [:tostr [:pick $CurrentDate 4 6]];
:local Month [:tostr [:pick $CurrentDate 0 3]];
:local Year [:tostr [:pick $CurrentDate 7 [:len $CurrentDate]]];
:do {
:local FileName ([/system identity get name]."__$Day_$Month_$Year__$Hour_$Min.backup");
/system backup save name=$FileName;
:log info "Backup file ($FileName) created success";
:do {
: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")
}
/tool e-mail send server=213.180.204.38 port=587 start-tls=yes user=$YandexLogin \
password=$YandexPassword to=$MailTo from=$YandexLogin \
subject=($MailSubject." ($Day/$Month/$Year $Hour:$Min)") \
body=( \
"System information:". \
"\n____________________\n \n". \
"Board name: ".[/system resource get platform]." ".[/system resource get board-name]."\n". \
"Version: ".[/system resource get version]."\n". \
"CPU: ".[/system resource get cpu]." (load ".[/system resource get cpu-load]."%)\n". \
"Free HDD space: ".[/system resource get free-hdd-space]." (total: ".[/system resource get total-hdd-space].")\n". \
"Free memory: ".[/system resource get free-memory]." (total: ".[/system resource get total-memory].")\n". \
"Uptime: ".[/system resource get uptime]. \
"\n \n \n". \
"Last log messages:". \
"\n____________________\n \n". \
$logMessages \
) file=$FileName;
:log info "Mail with backup sending success";
:do {
:delay 3s;
/file remove $FileName;
:log info "Remove backup file success";
} on-error={
:log warning "Cannot remove backup file $FileName";
};
} on-error={
:log warning "Email sending failed!";
};
} on-error={
:log error "Backup creation failed!";
};
Время от времени его немного дописываю, но этот вариант исправно работает уже несколько лет.
А как доработать этот скрипт, чтобы вместе с "полным" бэкапом делался и посылался по почте также бэкап конфигурации (.rsc), а в конце письма отображались не последние сообщения, а только определённые, например login failure?
немного доработал данный скрипт
добавил rsc и backup в одно сообщение
сделал resolv на smtp.yandex.ru вдруг ip яндекса поменяется
проверял на версии 6.44.1
Код: Выделить всё
:local YandexLogin "yourlogin@yandex.ru";
:local YandexPassword "yourpassword_yandex.ru";
:local MailTo "pochta_kuda_slat@blabla.ru";
:local MailSubject "MikroTik Backup";
:local CurrentTime [/system clock get time];
:local CurrentDate [/system clock get date];
:local Hour [:tostr [:pick $CurrentTime 0 2]];
:local Min [:tostr [:pick $CurrentTime 3 5]];
:local Day [:tostr [:pick $CurrentDate 4 6]];
:local Month [:tostr [:pick $CurrentDate 0 3]];
:local Year [:tostr [:pick $CurrentDate 7 [:len $CurrentDate]]];
:local smtpserv [:resolve "smtp.yandex.ru"];
:log info "Flushing DNS cache...";
/ip dns cache flush;
:delay 2;
:do {
:local FileName ([/system identity get name]."__$Day_$Month_$Year__$Hour_$Min.backup");
/system backup save name=$FileName;
:log info "Backup file ($FileName) created success";
:local Exportfile ([/system identity get name]."__$Day_$Month_$Year__$Hour_$Min.rsc");
:log info "Backup file ($Exportfile) created success";
/export file=$Exportfile;
:local files {$FileName;$Exportfile};
:do {
: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")
}
/tool e-mail send server=$smtpserv port=587 start-tls=yes user=$YandexLogin \
password=$YandexPassword to=$MailTo from=$YandexLogin \
subject=($MailSubject." ($Day/$Month/$Year $Hour:$Min)") \
body=( \
"System information:". \
"\n____________________\n \n". \
"Board name: ".[/system resource get platform]." ".[/system resource get board-name]."\n". \
"Version: ".[/system resource get version]."\n". \
"CPU: ".[/system resource get cpu]." (load ".[/system resource get cpu-load]."%)\n". \
"Free HDD space: ".[/system resource get free-hdd-space]." (total: ".[/system resource get total-hdd-space].")\n". \
"Free memory: ".[/system resource get free-memory]." (total: ".[/system resource get total-memory].")\n". \
"Uptime: ".[/system resource get uptime]. \
"\n \n \n". \
"Last log messages:". \
"\n____________________\n \n". \
$logMessages \
) file=$files;
:log info "Mail with backup sending success";
:do {
:delay 3s;
/file remove $FileName;
:delay 3s;
/file remove $Exportfile;
:log info "Remove backup file success";
} on-error={
:log warning "Cannot remove backup file $FileName";
};
} on-error={
:log warning "Email sending failed!";
:log warning "Deleting creating backups files";
:delay 3s;
/file remove $FileName;
:delay 3s;
/file remove $Exportfile;
:log info "Remove backup file success";
};
} on-error={
:log error "Backup creation failed!";
};
Re: Backup настроек на почту
Добавлено: 06 апр 2019, 17:21
usag
не отправляет на 6.43.2 на 6.43 отправляет причина не подскажите
Re: Backup настроек на почту
Добавлено: 09 июн 2019, 10:33
ruslan.turanskiy
Воспользовался скриптом из последнего поста, все работает - спасибо. Но возник вопрос, при отправке такого отчета с кириллицей приходят знаки вопроса. Я так понимаю, надо играть с кодировкой? Или это не поможет вовсе?
Re: Backup настроек на почту
Добавлено: 28 июн 2019, 13:37
kanitelka
На 6.44 решил вопрос с работой скрипта следующим образом - заменил local на global.
Вдруг кому пригодится.