Compare commits

..

1 commit

Author SHA1 Message Date
Evann DREUMONT
4fda20d521
check_updates.sh: add support for gotify messages 2025-01-08 16:56:38 +01:00

View file

@ -1,9 +1,32 @@
#!/bin/sh #!/bin/sh
#
# check_updates.sh
# $1 - message transport agent, either sendmail or gotify, default to sendmail
#
PATH="$PATH:/usr/sbin:/sbin" PATH="$PATH:/usr/sbin:/sbin"
TMP_FILE=$(mktemp) TMP_FILE=$(mktemp)
MAIL=$(mktemp) MESSAGE=$(mktemp)
MESSAGE_IS_MAIL=1
# message transport agent, either sendmail or gotify
# if you use gotify, you need to install gotify-cli
MTA=${1:-sendmail}
case "${MTA}" in
sendmail)
MTA='sendmail -t root@$(hostname -f)'
;;
gotify)
MTA='gotify p -q -t $TITLE'
MESSAGE_IS_MAIL=0
;;
*)
echo "Error: unknown MTA"
exit 1
;;
esac
# Possible race condition: if someone runs `eix blah` at the exact same time, # Possible race condition: if someone runs `eix blah` at the exact same time,
# it will block the update. But that seems highly improbable. # it will block the update. But that seems highly improbable.
@ -28,30 +51,37 @@ emerge -v --update --newuse --deep --with-bdeps=y --quiet-build=y @world \
&>> ${TMP_FILE} &>> ${TMP_FILE}
if [ "$(grep '\[ebuild U' ${TMP_FILE})" != '' ]; then if [ "$(grep '\[ebuild U' ${TMP_FILE})" != '' ]; then
echo "From: $(whoami)@$(hostname -f)" > ${MAIL} if [ ${MESSAGE_IS_MAIL} -eq 1 ]; then
echo "To: root@$(hostname -f)" >> ${MAIL} # The message is a mail we add corresponding headers
echo "From: $(whoami)@$(hostname -f)" > ${MESSAGE}
echo "To: root@$(hostname -f)" >> ${MESSAGE}
echo "Subject: $(hostname -f):$(grep Total: ${TMP_FILE} \ echo "Subject: $(hostname -f):$(grep Total: ${TMP_FILE} \
| cut -d ':' -f 2 | cut -d ')' -f 1))" >> ${MAIL} | cut -d ':' -f 2 | cut -d ')' -f 1))" >> ${MESSAGE}
echo "Content-Type: text/plain; charset=UTF-8" >> ${MAIL} echo "Content-Type: text/plain; charset=UTF-8" >> ${MESSAGE}
echo "Date: $(date --rfc-email)" >> ${MAIL} echo "Date: $(date --rfc-email)" >> ${MESSAGE}
printf "\n" >> ${MAIL} printf "\n" >> ${MESSAGE}
cat ${TMP_FILE} >> ${MAIL} else
TITLE = "$(hostname -f):$(grep Total: ${TMP_FILE} \
| cut -d ':' -f 2 | cut -d ')' -f 1)"
fi
cat ${TMP_FILE} >> ${MESSAGE}
if [ "$(lsof -n | awk '{ if ($6 == "DEL") print $9 }' | sort -u)" ]; then if [ "$(lsof -n | awk '{ if ($6 == "DEL") print $9 }' | sort -u)" ]; then
restart-services --no-color >> ${MAIL} restart-services --no-color >> ${MESSAGE}
fi fi
if ! [ -z "$(grep -v '{}' /var/lib/portage/preserved_libs_registry)" ]; then if ! [ -z "$(grep -v '{}' /var/lib/portage/preserved_libs_registry)" ]; then
emerge -v --quiet-build=y @preserved-rebuild >> ${MAIL} emerge -v --quiet-build=y @preserved-rebuild >> ${MESSAGE}
fi fi
emerge -p --depclean --with-bdeps\=y >> ${MAIL} emerge -p --depclean --with-bdeps\=y >> ${MESSAGE}
eix-test-obsolete \ eix-test-obsolete \
| grep -Pv '^No|^Skipping|[Aa]ll.*packages are in the database' \ | grep -Pv '^No|^Skipping|[Aa]ll.*packages are in the database' \
>> ${MAIL} >> ${MESSAGE}
cat ${MAIL} | sendmail -t root@$(hostname -f) eval "${MTA}" < "${MESSAGE}"
fi fi
rm ${TMP_FILE} ${MAIL} rm ${TMP_FILE} ${MESSAGE}