notification/templates/sendmail-reboot.sh

118 lines
2.0 KiB
Bash

#! /bin/sh
# chkconfig: 2345 20 80
### BEGIN INIT INFO
# Provides: sendmail-reboot
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Sending a message on startup
### END INIT INFO
start() {
TXT_MSG="[System States] $(cat /etc/hostname): OS has been rebooted"
REL=$(grep 'PRETTY_NAME' /etc/os-release | cut -d= -f2)
if [ -n "${REL}" ]; then
TXT_MSG=$(cat <<-END
${TXT_MSG}
--- RELEASE:
${REL}
END
)
fi
KER=$(uname -srm)
if [ -n "${KER}" ]; then
TXT_MSG=$(cat <<-END
${TXT_MSG}
--- KERNEL:
${KER}
END
)
fi
NET=$(ip a | grep 'inet' | grep -v -e '127.0.0.1/8' -e '::1/128' \
| awk '{print $2}')
if [ -n "${NET}" ]; then
TXT_MSG=$(cat <<-END
${TXT_MSG}
--- NETWORK:
${NET}
END
)
fi
CPU=$(grep 'model name' /proc/cpuinfo | cut -d':' -f2- | cut -d' ' -f2-)
if [ -n "${CPU}" ]; then
TXT_MSG=$(cat <<-END
${TXT_MSG}
--- CPUs:
${CPU}
END
)
fi
MEM=$(grep /proc/meminfo \
-e 'MemTotal' -e 'MemAvailable' -e 'MemFree' \
-e 'SwapTotal' -e 'SwapFree' \
| numfmt --field 2 --to=iec | sed 's/M/G/g' | sed 's/ kB//g')
if [ -n "${MEM}" ]; then
TXT_MSG=$(cat <<-END
${TXT_MSG}
--- MEMORY:
${MEM}
END
)
fi
DRI=$(LC_ALL=en_US.UTF-8 df -h --output=source,fstype,size,pcent,target \
-x tmpfs -x devtmpfs -x squashfs)
if [ -n "${DRI}" ]; then
TXT_MSG=$(cat <<-END
${TXT_MSG}
--- DRIVES:
${DRI}
END
)
fi
sleep 15
python3 /usr/local/bin/sendmail.py \
--smtp "$(grep "smtp=" /usr/local/bin/sendmail.config | cut -d= -f2)" \
-u "$(grep "from=" /usr/local/bin/sendmail.config | cut -d= -f2)" \
-p "$(grep "pass=" /usr/local/bin/sendmail.config | cut -d= -f2)" \
-d "$(grep "dest=" /usr/local/bin/sendmail.config | cut -d= -f2)" \
--subj "[System States] $(cat /etc/hostname): OS has been rebooted" \
--text "${TXT_MSG}" \
>> /dev/null 2>&1 &
}
stop() {
pkill -f /usr/local/bin/sendmail.py
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
printf "%s\n" "Usage: $0 {start|stop|restart}"
esac
exit 0