Скрипт автоматического обновления OS и прошивки + бекап и оповещение на почту

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
EagleNN
Сообщения: 13
Зарегистрирован: 09 авг 2017, 19:45

Обновил свой скрипт для RouterOS 7.

Принцип работы как и раньше:
- пароль для почтового аккаунта вводится в диалоге WinBox tools->email
- имя скрипта - любое удобное. У меня CheckUpdateAndEmail
- бэкапы настроек отправляются на почту двумя файлами. (.backup и .rsc)
- имя файла бекапа формируется из текущей даты, так что можно легко определить когда он был сделан.
- в письмо, дополнительно, вкладывается текущий Changelog от RouterOS чтобы оценить изменения и необходимость обновления.
- при использовании на нескольких роутерах определить его можно по имени (задается в WinBox system -> Identity)
 
{
## Check for update and send email with configuration if any
:log info "Starting Update check and backup script...";

## Notification e-mail
:local Eaccount "YourAccout@gmail.com";

## Changelog location
## :local Changelog "https://mikrotik.com/download/changelog ... elogs.html";
:local Changelog "https://mikrotik.com/current.rss";
:local ChangelogFilename "changelog_current.html";

## Resolve SMTP name and prepare backup variable
:local sysname [/system identity get name];
:local sysver [/system package get routeros version];
:local localSubj "Empty"
:local localBody "Empty"
:log info "Flushing DNS cache...";
/ip dns cache flush;
:delay 2;
:local smtpserv [:resolve "smtp.gmail.com"];

## Check for update
/system package update

## Set channel not working on the latest FW
## set channel=current

check-for-updates

## Wait on slow connections
:delay 15s;

## Important note: "installed-version" was "current-version" on older Router OSes
:if ([get installed-version] != [get latest-version]) do={

## New version of RouterOS available
:log info ("Upgrade available for RouterOS on router $sysname from $[/system package update get installed-version] to $[/system package update get latest-version] (channel:$[/system package update get channel])")

:set localSubj "RouterOS need to be upgraded on router $sysname"
:set localBody "Upgrade for RouterOS available on router $sysname from $[/system package update get installed-version] to $[/system package update get latest-version] (channel:$[/system package update get channel])"

} else={

## RouterOS latest, let's check for updated firmware
:log info ("No RouterOS upgrade found, checking for HW upgrade...")

/system routerboard

:if ( [get current-firmware] != [get upgrade-firmware]) do={

## New version of firmware available
:log info ("Firmware upgrade available on router $sysname from $[/system routerboard get current-firmware] to $[/system routerboard get upgrade-firmware]")

:set localSubj "Firmware need to be updated on router $sysname"
:set localBody "Firmware upgrade available on router $sysname from $[/system routerboard get current-firmware] to $[/system routerboard get upgrade-firmware]"

} else={

:log info ("No Router HW upgrade found")
}
}

:log info "localSubj= $localSubj ";
:log info "localBody=$localBody";

:if ( !($localSubj = "Empty")) do={

: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;
:do {/file remove $ChangelogFilename} on-error={};

## Downloading changelog file
/tool fetch mode=https url=("$Changelog") dst-path=("$ChangelogFilename");

## Backup configuration
: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");
:log info "Creating new Full Backup file...";
/system backup save name=$backupfile;
:delay 5;

: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");
:log info "Creating new Setup Script file...";
/export verbose file=$exportfile;
:delay 5;

:log info "Sending Full Backup file via E-mail...";
/tool e-mail send to=$Eaccount server=$smtpserv \
port=587 file=($backupfile ."," . $exportfile . "," . $ChangelogFilename) \
subject=("$localSubj") \
body=("$localBody");
:delay 10;
}
}


Ответить