Skip to content

Instantly share code, notes, and snippets.

@elico
Last active March 26, 2024 21:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save elico/4dc496842947d6176ddc83b9638a64c2 to your computer and use it in GitHub Desktop.
Save elico/4dc496842947d6176ddc83b9638a64c2 to your computer and use it in GitHub Desktop.
RouterOS v7 hardware appliance email backup script
{
:do {
:log info "STARTING BACKUP process";
:local customerNumber "Ac3_Cust.no_1";
:local boardSerial [/system/routerboard/get serial-number];
:local sendMail true;
:local uploadFile false;
:local mailServer "smtp.gmail.com";
:local fromLine "example company MT Router";
:local mailServerSubmissioPort 587;
:local emailUsername "example-src@gmail.com";
:local emailPassword "veryStrongPassword";
:local recipient "example-src@example.org";
:local uploadUrl "https://test:vertStrongPassword@backup.example.org/upload.php";
:log info "Configuring email settings";
:if ($sendMail = true) do={
/tool/e-mail set server=$mailServer from=$fromLine port=$mailServerSubmissioPort tls=no user=$emailUsername password=$emailPassword;
}
:log info "GENERATING backup file";
:local backupfile ($customerNumber . "_" . $boardSerial . ".backup");
/system/backup/save name=$backupfile dont-encrypt=yes;
:delay 1s;
:if ($sendMail = true) do={
:local subject "$customerNumber - $boardSerial - backup file";
/tool/e-mail/send from=$emailUsername to=$recipient subject=$subject file=$backupfile;
:delay 1s;
}
:log info "GENERATING RSCs";
:log info "GENERATING generic export RSC";
:local rscGeneric ($customerNumber . "_" . $boardSerial . "_generic.rsc");
/export file=$rscGeneric show-sensitive;
:delay 1s;
:if ($sendMail = true) do={
:local subject "$customerNumber - $boardSerial - rscGeneric backup file";
/tool/e-mail/send from=$emailUsername to=$recipient subject=$subject file=$rscGeneric;
:delay 1s;
}
:if ($uploadFile = true) do={
:local data [/file/get [/file/find name=$rscGeneric] contents];
/tool/fetch url="$uploadUrl?ext=rsc&id=$boardSerial&type=generic&cust=$customerNumber" http-method=put http-data=$data output=none ;
:delay 1s;
}
:log info "GENERATING verobse export RSC";
:local rscVerbose ($customerNumber . "_" . $boardSerial . "_verbose.rsc");
/export file=$rscVerbose verbose show-sensitive;
:delay 1s;
:if ($sendMail = true) do={
:local subject "$customerNumber - $boardSerial - rscVerbose backup file";
/tool/e-mail/send from=$emailUsername to=$recipient subject=$subject file=$rscVerbose;
:delay 1s;
}
:if ($uploadFile = true) do={
:local data [/file/get [/file/find name=$rscVerbose] contents];
/tool/fetch url="$uploadUrl?ext=rsc&id=$boardSerial&type=verbose&cust=$customerNumber" http-method=put http-data=$data output=none ;
:delay 1s;
}
:log info "GENERATING terse export RSC";
:local rscTerse ($customerNumber . "_" . $boardSerial . "_terse.rsc");
/export file=$rscTerse terse show-sensitive;
:delay 1s;
:if ($sendMail = true) do={
:local subject "$customerNumber - $boardSerial - rscTerse backup file";
/tool/e-mail/send from=$emailUsername to=$recipient subject=$subject file=$rscTerse;
:delay 1s;
}
:if ($uploadFile = true) do={
:local data [/file/get [/file/find name=$rscTerse] contents];
/tool/fetch url="$uploadUrl?ext=rsc&id=$boardSerial&type=terse&cust=$customerNumber" http-method=put http-data=$data output=none ;
:delay 1s;
}
:log info "GENERATING compact export RSC";
:local rscCompact ($customerNumber . "_" . $boardSerial . "_compact.rsc");
/export file=$rscCompact compact show-sensitive;
:delay 1s;
:if ($sendMail = true) do={
:local subject "$customerNumber - $boardSerial - rscCompact backup file";
/tool/e-mail/send from=$emailUsername to=$recipient subject=$subject file=$rscCompact;
:delay 1s;
}
:if ($uploadFile = true) do={
:local data [/file/get [/file/find name=$rscCompact] contents];
/tool/fetch url="$uploadUrl?ext=rsc&id=$boardSerial&type=compact&cust=$customerNumber" http-method=put http-data=$data output=none ;
:delay 1s;
}
:log info "GENERATING supout.rif";
:local supoutRif ($customerNumber . "_" . $boardSerial . "_suptout.rif");
/system/sup-output name=$supoutRif;
:delay 3s;
:if ($sendMail = true) do={
:local subject "$customerNumber - $boardSerial - supout.rif file";
/tool/e-mail/send from=$emailUsername to=$recipient subject=$subject file=$supoutRif;
:delay 1s;
}
:if ($uploadFile = true) do={
:local data [/file/get [/file/find name=$rscCompact] contents];
/tool/fetch url="$uploadUrl?ext=rsc&id=$boardSerial&type=compact&cust=$customerNumber" http-method=put http-data=$data output=none ;
:delay 1s;
}
:log info "BACKUP FINISHED";
} on-error={
:log info "BACKUP Error";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment