# vim: ft=sh function _systemctl () { test -n "$1" || return eval $(systemctl show $1 | egrep '^(ExecMainStatus|Result|ActiveState|SubState|Type)=') if test -n "$Type"; then test $ExecMainStatus -eq 0 \ && test $Result = 'success' \ && test $ActiveState = 'active' \ && [[ ( $Type =~ ^(simple|forking|notify)$ && $SubState = 'running' ) || ( $Type = 'oneshot' && $SubState = 'exited' ) ]] \ || echo "état du service anormal" else echo "service $1 inexistant" fi } function sys_state () { local failed_units= eval $(systemctl show | egrep '^(SystemState|NFailedUnits)=') if test $SystemState != "running" -o $NFailedUnits -ne 0; then msg="$SystemState mode ($NFailedUnits units failed):%0a" msg+=$(systemctl --failed --no-legend | awk ' { split($1, units, ".") failed[units[2]][units[1]]=1 numfailed[units[2]]++ } END { for (ut in failed) { printf("%s%%0a", ut) for (un in failed[ut]) { last = --numfailed[ut] == 0 ? 1 : 0 printf("%s %s%s", last ? "└─" : "├─", un, last ? "" : "%0a") } } }') fi } function upgrades () { local log="/var/log/unattended-upgrades/unattended-upgrades.log" test -r $log || return local lastline=$(tail -1 $log) local lastentry=$(date +%s -d "$(cut -f1,2 -d' ' <<< $lastline)") test -n "$lastentry" || return local status=$(cut -f3 -d' ' <<< $lastline) test $(($lastentry + 86400)) -gt $now && echo "pas de mise à jour depuis le ${lastline%% *}" }