scripts

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit eb4d19edf5a17cc6bd8bd6816eeeaaa42a32a29c
parent 80b96bc759618dc24ee92d34c590b6ad15e65bf8
Author: Andrew Laack <andrew@laack.co>
Date:   Tue,  7 Apr 2026 12:21:48 -0500

Renamed email script, send emails on backup finish

Diffstat:
Mbackup.sh | 6++++++
Demail/email-self.sh | 62--------------------------------------------------------------
Aemail/email-send.sh | 74++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 80 insertions(+), 62 deletions(-)

diff --git a/backup.sh b/backup.sh @@ -3,9 +3,15 @@ set -o pipefail mkdir -p ~/logs +# have to do this because cron +source ~/.bashrc + if ~/bin/backups/simple.sh | tee ~/logs/backup.log 2>&1; then echo "PASS: Backup Success" | tee -a ~/logs/backup.log + echo "PASS: Backup Success" | email-send.sh date | tee -a ~/logs/backup-times.txt else echo "FAIL: Backup Failed" | tee -a ~/logs/backup.log + echo "FAIL: Backup Failed" | email-send.sh fi + diff --git a/email/email-self.sh b/email/email-self.sh @@ -1,62 +0,0 @@ -#!/bin/bash -set -euo pipefail - -UUID=$(uuidgen) -HOSTNAME=$(hostnamectl | head -n 1 | awk '{print $3}') - -WORKDIR="/tmp/emails" -PLAIN="$WORKDIR/$UUID.txt" -ENC="$WORKDIR/$UUID.asc" -FINAL="$WORKDIR/$UUID.eml" - -mkdir -p "$WORKDIR" - -BOUNDARY="pgp-boundary-$UUID" - -cat > "$PLAIN" <<EOF -Content-Type: text/plain; charset=utf-8 - -$(cat) -EOF - -gpg --yes --batch \ - --armor \ - --output "$ENC" \ - --encrypt \ - --recipient "$EMAIL_ADDRESS" \ - "$PLAIN" - -{ - echo "From: Automated <$EMAIL_ADDRESS>" - echo "To: Automated <$EMAIL_ADDRESS>" - echo "Subject: Message from $HOSTNAME" - echo "MIME-Version: 1.0" - echo "Content-Type: multipart/encrypted; protocol=\"application/pgp-encrypted\"; boundary=\"$BOUNDARY\"" - echo - echo "This is an OpenPGP/MIME encrypted message." - echo - echo "--$BOUNDARY" - echo "Content-Type: application/pgp-encrypted" - echo - echo "Version: 1" - echo - echo "--$BOUNDARY" - echo "Content-Type: application/octet-stream; name=\"encrypted.asc\"" - echo "Content-Transfer-Encoding: 7bit" - echo "Content-Disposition: inline; filename=\"encrypted.asc\"" - echo - cat "$ENC" - echo - echo "--$BOUNDARY--" -} > "$FINAL" - -curl -s --ssl-reqd \ - --url "smtps://$EMAIL_DOMAIN:465" \ - --user "$EMAIL_ADDRESS:$EMAIL_PW" \ - --mail-from "$EMAIL_ADDRESS" \ - --mail-rcpt "$EMAIL_ADDRESS" \ - --upload-file "$FINAL" - -rm -f "$PLAIN" "$ENC" "$FINAL" - -echo "PGP/MIME encrypted message sent." diff --git a/email/email-send.sh b/email/email-send.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +# USAGE: email-send.sh {SUBJECT} +# Reads message from stdin +# If there is no subject it sends "Message from {hostname}" + +set -euo pipefail + +UUID=$(uuidgen) +HOSTNAME=$(hostnamectl | head -n 1 | awk '{print $3}') + +WORKDIR="/tmp/emails" +PLAIN="$WORKDIR/$UUID.txt" +ENC="$WORKDIR/$UUID.asc" +FINAL="$WORKDIR/$UUID.eml" + +mkdir -p "$WORKDIR" + +BOUNDARY="pgp-boundary-$UUID" + +SUBJECT="Message from $HOSTNAME" + +if [ -n "$1" ]; then + SUBJECT=$1 +fi + + +cat > "$PLAIN" <<EOF +Content-Type: text/plain; charset=utf-8 + +$(cat) +EOF + +gpg --yes --batch \ + --armor \ + --output "$ENC" \ + --encrypt \ + --recipient "$EMAIL_ADDRESS" \ + "$PLAIN" + +{ + echo "From: Automated <$EMAIL_ADDRESS>" + echo "To: Automated <$EMAIL_ADDRESS>" + echo "Subject: $SUBJECT" + echo "MIME-Version: 1.0" + echo "Content-Type: multipart/encrypted; protocol=\"application/pgp-encrypted\"; boundary=\"$BOUNDARY\"" + echo + echo "This is an OpenPGP/MIME encrypted message." + echo + echo "--$BOUNDARY" + echo "Content-Type: application/pgp-encrypted" + echo + echo "Version: 1" + echo + echo "--$BOUNDARY" + echo "Content-Type: application/octet-stream; name=\"encrypted.asc\"" + echo "Content-Transfer-Encoding: 7bit" + echo "Content-Disposition: inline; filename=\"encrypted.asc\"" + echo + cat "$ENC" + echo + echo "--$BOUNDARY--" +} > "$FINAL" + +curl -s --ssl-reqd \ + --url "smtps://$EMAIL_DOMAIN:465" \ + --user "$EMAIL_ADDRESS:$EMAIL_PW" \ + --mail-from "$EMAIL_ADDRESS" \ + --mail-rcpt "$EMAIL_ADDRESS" \ + --upload-file "$FINAL" + +rm -f "$PLAIN" "$ENC" "$FINAL" + +echo "PGP/MIME encrypted message sent."