forked from alarig/gentoo-auto-update
check_updates.sh: add support for gotify messages
This commit is contained in:
parent
8e95d73e6d
commit
4fda20d521
1 changed files with 45 additions and 15 deletions
|
@ -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}
|
||||||
|
|
Loading…
Reference in a new issue