Reorganise scripts

This commit is contained in:
pfych 2024-08-16 22:49:20 +10:00
parent 5ebf7f9b5c
commit 4ae0656da4
18 changed files with 196 additions and 104 deletions

View file

@ -0,0 +1,54 @@
#!/bin/bash
source /Users/noahheague/.config/scripts/util/secret.sh
export B2_ACCOUNT_ID=$(getSecret "/server/mac-mini-1/b2-account-id")
export B2_ACCOUNT_KEY=$(getSecret "/server/mac-mini-1/b2-account-key")
/Users/noahheague/.config/scripts/util/webhook.sh \
-c "backup" \
-m "Restic Backup Started..."
# Reclone download external files
/Users/noahheague/.config/scripts/util/webhook.sh \
-c "backup" \
-m "Pulling external files..."
/usr/local/bin/rclone copy Dropbox:Delta\ Emulator /Volumes/Homelab/30\ Archival/34\ Assorted/Delta\ Emulator
/Users/noahheague/.config/scripts/util/webhook.sh \
-c "backup" \
-m "Pushing to remote..."
/usr/local/bin/restic \
--pack-size 128 \
-r b2:pfych-home-server-backup:/ \
backup /Volumes/Homelab/ \
--verbose=2 \
--json \
--password-command "getSecret '/server/mac-mini-1/restic-key'" \
--exclude "40 Programming/Docker/nginx-proxy-manager/data/nginx" \
--exclude "50 BitTorrent" \
--exclude "30 Archival/35 BMS" \
--exclude "30 Archival/32 Youtube/kkm" \
--exclude "Mastodon/public" \
--exclude "node_modules" \
--exclude ".fseventsd" \
--exclude ".Spotlight-V100" \
--exclude ".Trash-1000" \
--exclude ".DS_Store" \
--exclude ".DocumentRevisions-V100" \
--exclude ".TemporaryItems" \
--exclude ".Trashes" | jq 'select(.message_type | test("summary"))' > /tmp/restic-backup.json
/Users/noahheague/.config/scripts/util/webhook.sh \
-c "backup" \
-m "Restic Backup Completed!"
TIME_TAKEN=$(gdate -d@"$(cat /tmp/restic-backup.json | jq '.total_duration')" -u +%H:%M:%S)
FILES_CHANGED=$(cat /tmp/restic-backup.json | jq '.files_changed')
DIRECTORIES_CHANGED=$(cat /tmp/restic-backup.json | jq '.dirs_changed')
DATA_ADDED=$(units -t -o "%.0f" "$(cat /tmp/restic-backup.json | jq '.data_added') bytes" megabytes)
/Users/noahheague/.config/scripts/util/webhook.sh \
-c "backup" \
-m "Time Taken: $TIME_TAKEN\nFiles Changed: $FILES_CHANGED\nDirectories Changed: $DIRECTORIES_CHANGED\nData Added: ${DATA_ADDED}MB"

42
.config/scripts/cron/coles.sh Executable file
View file

@ -0,0 +1,42 @@
#!/bin/bash
ROOT_URL='https://www.coles.com.au/product'
# <Price>|<ProductID>
declare -a PRODUCT_IDS=(
'$40.00|lavazza-espresso-barista-gran-crema-coffee-beans-1kg-3756513|Coffee Beans'
'$5.20|tostitos-restaurant-style-smokin-chipotle-sour-cream-165g-6596322|Tostitos'
'$8.00|nudie-pulp-oranges-juice-chilled-2l-7895759|Orange Juice'
'$2.50|peckish-original-rice-crackers-90g-9999336|Pekish Crackers'
'$3.00|liddells-lactose-free-full-cream-milk-1l-6706012|Lactose Free Milk'
'$9.50|connoisseur-ice-cream-roasted-hazelnut-4-pack-400ml-5019356|Connoisseur Ice Cream'
'$6.90|carman'\''s-dark-choc-espresso-nut-bar-5-pack-160g-1905237|Carmans Espresso Nut Bar'
'$9.00|twisted-licks-rich-chocolate-zero-added-sugar-sticks-4-pack-320ml-3778083|Licks Ice Cream'
)
/Users/noahheague/.config/scripts/util/webhook.sh \
-c "coles" \
-m "Checking Prices..."
for PRODUCT in "${PRODUCT_IDS[@]}"
do
EXPECTED_PRICE=$(echo $PRODUCT | cut -d "|" -f1)
PRODUCT_ID=$(echo $PRODUCT | cut -d "|" -f2)
PRETTY_NAME=$(echo $PRODUCT | cut -d "|" -f3)
OUTPUT=$(curl -s "$ROOT_URL\/$PRODUCT_ID" \
| /usr/local/bin/ggrep -oP "aria-label=\"Price .*?\"" \
| cut -d \" -f2 \
| cut -d " " -f2)
if [[ "$OUTPUT" != "$EXPECTED_PRICE" ]]
then
/Users/noahheague/.config/scripts/util/webhook.sh \
-c "coles" \
-m "$PRETTY_NAME is on sale! **$OUTPUT** (was $EXPECTED_PRICE)"
fi
done
/Users/noahheague/.config/scripts/util/webhook.sh \
-c "coles" \
-m "All prices checked!"

View file

@ -0,0 +1,65 @@
export AWS_PROFILE=default
DOMAIN="pfy.ch"
declare -a SUB_DOMAINS=("home" "git" "zip")
# Scripts
CURRENT_IP=`dig @resolver4.opendns.com myip.opendns.com +short`
HOSTED_ZONE_ID=$(
/usr/local/bin/aws route53 list-hosted-zones \
| /usr/local/bin/jq \
--arg domain "$DOMAIN." \
'.HostedZones
| map(select(.Name == $domain))
| .[] .Id' \
| sed 's/"//g'
)
for SUB_DOMAIN in "${SUB_DOMAINS[@]}"
do
RECORD_VALUE=$(
/usr/local/bin/aws route53 list-resource-record-sets \
--hosted-zone-id $HOSTED_ZONE_ID \
| /usr/local/bin/jq \
--arg fullDomain "$SUB_DOMAIN.$DOMAIN." \
'.ResourceRecordSets
| map(select(.Name == $fullDomain))
| .[] .ResourceRecords
| .[] .Value' \
| sed 's/"//g'
)
if test "$CURRENT_IP" != "$RECORD_VALUE"; then
CHANGE_REQUEST="
{
\"HostedZoneId\": \"$HOSTED_ZONE_ID\",
\"ChangeBatch\": {
\"Comment\": \"Dynamic DNS change\",
\"Changes\": [
{
\"Action\": \"UPSERT\",
\"ResourceRecordSet\": {
\"Name\": \"$SUB_DOMAIN.$DOMAIN\",
\"Type\": \"A\",
\"TTL\": 3600,
\"ResourceRecords\": [
{
\"Value\": \"$CURRENT_IP\"
}
]
}
}
]
}
}
"
echo "$CURRENT_IP does not match $RECORD_VALUE on $SUB_DOMAIN.$DOMAIN. Changing...";
/usr/local/bin/aws route53 change-resource-record-sets --hosted-zone-id $HOSTED_ZONE_ID --cli-input-json "$CHANGE_REQUEST"
/Users/noahheague/.config/scripts/webhook.sh \
-c "dns" \
-m "$CURRENT_IP does not match $RECORD_VALUE on $SUB_DOMAIN.$DOMAIN"
else
echo "$CURRENT_IP matches $RECORD_VALUE on $SUBDOMAIN.$DOMAIN."
fi
done