diff options
author | Christian Hesse <mail@eworm.de> | 2019-07-08 17:48:55 +0200 |
---|---|---|
committer | Christian Hesse <mail@eworm.de> | 2019-07-19 11:46:29 +0200 |
commit | 8d1313f58885682dab5789fc9805e573d32fc661 (patch) | |
tree | c2ca07ed69a28c19fedac359237fdfbd3060eb8b /upload-backup | |
parent | 26f01b238b914e55396df4c5ce6cbccfa236d3da (diff) |
add script 'upload-backup'change-6
Diffstat (limited to 'upload-backup')
-rw-r--r-- | upload-backup | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/upload-backup b/upload-backup new file mode 100644 index 0000000..da2a5d7 --- /dev/null +++ b/upload-backup @@ -0,0 +1,75 @@ +#!rsc +# RouterOS script: upload-backup +# Copyright (c) 2013-2019 Christian Hesse <mail@eworm.de> +# +# create and upload backup and config file + +:global Identity; +:global Domain; +:global BackupUploadUrl; +:global BackupUploadUser; +:global BackupUploadPass; +:global BackupSendBinary; +:global BackupSendExport; +:global BackupPassword; + +:global CharacterReplace; +:global SendNotification; + +:if ($BackupSendBinary != true && \ + $BackupSendExport != true) do={ + :log error ("Configured to send neither backup nor config export."); + :error "Error: See log for details."; +} + +# filename based on identity +:local FileName [ $CharacterReplace ($Identity . "." . $Domain) "." "_" ]; +:local BackupFile "none"; +:local ConfigFile "none"; + +# get some system information +:local BoardName [ / system resource get board-name ]; +:local Model [ / system routerboard get model ]; +:local SerialNumber [ / system routerboard get serial-number ]; +:local Channel [ / system package update get channel ]; +:local InstalledVersion [ / system package update get installed-version ]; + +# binary backup +:if ($BackupSendBinary = true) do={ + / system backup save encryption=aes-sha256 name=$FileName password=$BackupPassword; + + :do { + / tool fetch upload=yes url=($BackupUploadUrl . "/" . $FileName . ".backup") \ + user=$BackupUploadUser password=$BackupUploadPass src-path=($FileName . ".backup"); + :set BackupFile ($FileName . ".backup"); + } on-error={ + :log error ("Uploading backup file failed!"); + :set BackupFile "failed"; + } +} + +# create configuration export +:if ($BackupSendExport = true) do={ + / export terse file=$FileName; + + :do { + / tool fetch upload=yes url=($BackupUploadUrl . "/" . $FileName . ".rsc") \ + user=$BackupUploadUser password=$BackupUploadPass src-path=($FileName . ".rsc"); + :set ConfigFile ($FileName . ".rsc"); + } on-error={ + :log error ("Uploading configuration export failed!"); + :set ConfigFile "failed"; + } +} + +$SendNotification "Backup & Config Upload" \ + ("Backup and config export for " . $Identity . ".\n\n" . \ + "Board name: " . $BoardName . "\n" . \ + "Model: " . $Model . "\n" . \ + "Serial number: " . $SerialNumber . "\n" . \ + "Hostname: " . $Identity . "\n" . \ + "Channel: " . $Channel . "\n" . \ + "RouterOS: " . $InstalledVersion . "\n\n" . \ + "Backup uploaded: " . $BackupFile . "\n" . \ + "Config uploaded: " . $ConfigFile); +} |