X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=filesystem%2Fusr%2Flocal%2Fbin%2Fmyupgrade;h=b86e418c64b259a0423754ea8d25c6416c4bdf01;hb=768363d8771edb9d9ed82425fa772d77b90139c0;hp=ee1890f4415b72a42840d85eebdd3587d0718731;hpb=c7219eb0f2415e8a95c6d7bd98503c61098f9049;p=distro-setup diff --git a/filesystem/usr/local/bin/myupgrade b/filesystem/usr/local/bin/myupgrade index ee1890f..b86e418 100755 --- a/filesystem/usr/local/bin/myupgrade +++ b/filesystem/usr/local/bin/myupgrade @@ -2,6 +2,8 @@ # Copyright (C) 2019 Ian Kelling # SPDX-License-Identifier: AGPL-3.0-or-later +# usage: set DEBUG env var to anything to output to stdout + # Note: running this inside a cronjob, it wont mail any output if we end # up rebooting from this script. @@ -19,28 +21,55 @@ err() { echo "[$(date +'%Y-%m-%d %H:%M:%S%z')]: $pre: $*" >&2; } hn=$(hostname -f) source /a/bin/bash_unpublished/source-state +d() { + if [[ $DEBUG ]]; then + pee cat "wall -n" + else + # 2>/dev/null hopefully gets rid of errors like: wall: /dev/pts/0: No such file or directory + sed 's/^/myupgrade /' | pee logger "wall -n" 2>/dev/null + fi +} myreboot() { for x in {30..1}; do - echo "pid $$. unattended upgrade, rebooting in $((x*10)) seconds" | wall -n + echo "pid $$. unattended upgrade, rebooting in $((x*10)) seconds" | wall -n 2>/dev/null sleep 10 done for x in {30..1}; do if ! fuser /var/lib/dpkg/lock &> /dev/null; then - echo "pid $$. unattended upgrade, rebooting now" | pee cat "wall -n" + echo "pid $$. unattended upgrade, rebooting now" | d /a/bin/ds/keyscript-on /sbin/reboot exit 0 fi - echo "pid $$. unattended upgrade reboot waiting 10 seconds for dpkg lock" | wall -n + echo "pid $$. unattended upgrade reboot waiting 10 seconds for dpkg lock" | wall -n 2>/dev/null sleep 10 done - echo "pid $$. dpkg locked for 5 minutes, automatic reboot failed" | pee cat "wall -n" + echo "pid $$. dpkg locked for 5 minutes, automatic reboot failed" | d } +case $HOSTNAME in + kd) + /c/roles/prom/files/simple/usr/local/bin/fsf-install-prometheus + /c/roles/prom_export/files/simple/usr/local/bin/fsf-install-node-exporter -l 127.0.0.1 + ;; + li|bk|je) + /c/roles/prom_export/files/simple/usr/local/bin/fsf-install-node-exporter -l 127.0.0.1 + ;; + *) + /c/roles/prom_export/files/simple/usr/local/bin/fsf-install-node-exporter + ;; +esac + + +# TODO: executed from cron, this doesnt sent an email when we reboot, +# because rebooting from the script stops the ability to send email. +# We should figure some workaround. + if ! out=$(/sbin/needrestart -p 2>&1); then - e "$out" - if [[ $HOSTNAME != "$MAIL_HOST" ]]; then + if [[ $HOSTNAME == "$MAIL_HOST" ]]; then + needrestart -r l + else myreboot fi fi