aboutsummaryrefslogtreecommitdiffstats
path: root/upload-backup
diff options
context:
space:
mode:
authorGravatar Christian Hesse <mail@eworm.de>2019-07-08 17:48:55 +0200
committerGravatar Christian Hesse <mail@eworm.de>2019-07-19 11:46:29 +0200
commit8d1313f58885682dab5789fc9805e573d32fc661 (patch)
treec2ca07ed69a28c19fedac359237fdfbd3060eb8b /upload-backup
parent26f01b238b914e55396df4c5ce6cbccfa236d3da (diff)
add script 'upload-backup'change-6
Diffstat (limited to 'upload-backup')
-rw-r--r--upload-backup75
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);
+}