diff --git a/README.md b/README.md index 5d1ff1b..27c31ab 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ # Bash-Stash -A collection of console based bash scripts I've written at various times. It may include scripts written in other languages. \ No newline at end of file +# OpenWrt + +These are scripts I've used on OpenWrt for various purposes. \ No newline at end of file diff --git a/backup.bash b/backup.bash new file mode 100644 index 0000000..7d291ad --- /dev/null +++ b/backup.bash @@ -0,0 +1,33 @@ +#!/bin/bash + +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=$(read_json "$JSON_FILE" "restic" "password") + +export RESTIC_PASSWORD="$bkpwd" + +# Stuff to backup + +/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: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: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: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 \ No newline at end of file diff --git a/band.bash b/band.bash new file mode 100644 index 0000000..a10aa2d --- /dev/null +++ b/band.bash @@ -0,0 +1,35 @@ +#!/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 +} + +source ./config.bash + +# initial values +mtotal=1000 # monthly total in GB for high end cut off +dmax=40 # daily max usage value +md=`date +%d` # day of the month numerically +cmd=$(($dmax * $md)) # computed max daily +wif="wan" +token=$(read_json "$JSON_FILE" "ntfy" "token") + +# now vnstat stuff, some of this is specific to openwrt + +vnhourly=`vnstat -i $wif -d -s --oneline | awk -F\; '{print $6}'` # total monthly usage +vnmonthly=`vnstat -i $wif -d -s --oneline | awk -F\; '{print $11}'` # daily total usage + + +logger "dom $md cm $cmd vnhourly $vnhourly vnmonthly $vnmonthly"; +curl -d "dom $md cm $cmd vnhourly $vnhourly vnmonthly $vnmonthly" 192.168.1.168:83/bandmon +curl -H "Authorization: Bearer $token" -d "dom $md cm $cmd vnhourly $vnhourly vnmonthly $vnmonthly" https://pngpst.net/openwrt_lan \ No newline at end of file diff --git a/commando.bash b/commando.bash new file mode 100644 index 0000000..c05bf3d --- /dev/null +++ b/commando.bash @@ -0,0 +1,20 @@ +#!/bin/bash + +# commando.bash + +set -eo pipefail # you cann add u into -eo, but it drives me nuts so I won't + +if [[ -n "${BASHD_DEBUG}" ]]; then # aievitability 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 + +token=$(read_json "$JSON_FILE" "ntfy" "token") \ No newline at end of file diff --git a/config.bash b/config.bash new file mode 100644 index 0000000..4e5a9bf --- /dev/null +++ b/config.bash @@ -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 + +} + +check_json() { + local JSON_FILE="$1" + if [ ! -f "$JSON_FILE" ]; then + create_json "$JSON_FILE" + fi +} + +check_json "$JSON_FILE" +