Copied code from the bash framework and add json based config file support
This commit is contained in:
parent
3ccf356c11
commit
6d893a43a6
3 changed files with 78 additions and 10 deletions
30
backup.bash
30
backup.bash
|
@ -1,23 +1,33 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Another OpenWrt bash script
|
||||
set -eo pipefail # you cann add u into -eo, but it drives me nuts so I won't
|
||||
|
||||
if [[ -n "${BASHD_DEBUG}" ]]; then # a inevitability that this will be used
|
||||
set -x
|
||||
fi
|
||||
|
||||
trap cleanup EXIT # A little more robust cleanup
|
||||
|
||||
cleanup() {
|
||||
# We can clean up any temp files or what nots, but for now a place holder
|
||||
true
|
||||
}
|
||||
|
||||
source ./config.bash
|
||||
|
||||
# Run backups via restic
|
||||
|
||||
bkpwd="yourbackuppasswordhere" # We are gonna need that
|
||||
bkpwd=$(read_json "$JSON_FILE" "restic" "password")
|
||||
|
||||
export RESTIC_PASSWORD="$bkpwd"
|
||||
|
||||
# resticbasecmd = "restic -r sftp:restic@192.168.1.113:/home/restic backup" # root ssh key must be setup to access the remote target
|
||||
# OpenWrt uses dropbear so use dropbear's key gen
|
||||
# Stuff to backup
|
||||
|
||||
# Two dirs I want to keep backed up
|
||||
|
||||
/usb/scripts/bin/restic -r sftp:pi@192.168.1.168:/storage/backup/openwrt backup /etc
|
||||
/usb/scripts/bin/restic -r sftp:nbak@192.168.1.168:/storage/backup/openwrt backup /etc
|
||||
curl -d "ETC backed up" 192.168.1.168:83/openwrt_backup
|
||||
/usb/scripts/bin/restic -r sftp:pi@192.168.1.168:/storage/backup/openwrt backup /usb/scripts
|
||||
/usb/scripts/bin/restic -r sftp:nbak@192.168.1.168:/storage/backup/openwrt backup /usb/scripts
|
||||
curl -d "Scripts backed up" 192.168.1.168:83/openwrt_backup
|
||||
/usb/scripts/bin/restic -r sftp:pi@192.168.1.168:/storage/backup/openwrt backup /root
|
||||
/usb/scripts/bin/restic -r sftp:nbak@192.168.1.168:/storage/backup/openwrt backup /root
|
||||
curl -d "Root backed up" 192.168.1.168:83/openwrt_backup
|
||||
/usb/scripts/bin/restic -r sftp:pi@192.168.1.168:/storage/backup/openwrt backup /usb/vnstat/vnstat.db
|
||||
/usb/scripts/bin/restic -r sftp:nbak@192.168.1.168:/storage/backup/openwrt backup /usb/vnstat/vnstat.db
|
||||
curl -d "Vnstat backed up" 192.168.1.168:83/openwrt_backup
|
13
band.bash
13
band.bash
|
@ -1,6 +1,19 @@
|
|||
#!/bin/bash
|
||||
# Requires vnstat to be running on target system
|
||||
|
||||
set -eo pipefail # you cann add u into -eo, but it drives me nuts so I won't
|
||||
|
||||
if [[ -n "${BASHD_DEBUG}" ]]; then # a inevitability that this will be used
|
||||
set -x
|
||||
fi
|
||||
|
||||
trap cleanup EXIT # A little more robust cleanup
|
||||
|
||||
cleanup() {
|
||||
# We can clean up any temp files or what nots, but for now a place holder
|
||||
true
|
||||
}
|
||||
|
||||
# initial values
|
||||
mtotal=1000 # monthly total in GB for high end cut off
|
||||
dmax=40 # daily max usage value
|
||||
|
|
45
config.bash
Normal file
45
config.bash
Normal file
|
@ -0,0 +1,45 @@
|
|||
#!/bin/bash
|
||||
|
||||
JSON_FILE="config.json"
|
||||
|
||||
read_json() {
|
||||
local JSON_FILE="$1"
|
||||
local SECTION="$2"
|
||||
local KEY="$3"
|
||||
|
||||
jq -r ".${SECTION}.${KEY}" "$JSON_FILE"
|
||||
}
|
||||
|
||||
# Function to write a value to a JSON configuration file
|
||||
write_json() {
|
||||
local JSON_FILE="$1"
|
||||
local SECTION="$2"
|
||||
local KEY="$3"
|
||||
local VALUE="$4"
|
||||
|
||||
# It important to check if the file is valid otherwise stuff breaks
|
||||
if ! jq -e . < "$JSON_FILE" > /dev/null 2>&1; then
|
||||
echo "Error: JSON file is not valid JSON."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Using jq to set the value. The original file is replaced with a new file with the updated value.
|
||||
jq ".${SECTION}.${KEY} = \"$VALUE\"" "$JSON_FILE" > "temp.json" && mv "temp.json" "$JSON_FILE"
|
||||
|
||||
}
|
||||
|
||||
create_json() {
|
||||
local JSON_FILE="$1"
|
||||
echo '{"bashini": "new"}' | jq '.' > "$JSON_FILE" # well we need something in there
|
||||
write_json "$JSON_FILE" "restic" "password" "backupsarefun" # for the openwrt backup script here for testing
|
||||
}
|
||||
|
||||
check_json() {
|
||||
local JSON_FILE="$1"
|
||||
if [ ! -f "$JSON_FILE" ]; then
|
||||
create_json "$JSON_FILE"
|
||||
fi
|
||||
}
|
||||
|
||||
check_json "$JSON_FILE"
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue