ajout de la supervision
|
1 |
# vim: ft=sh |
2 | ||
3 |
function _systemctl () { |
|
4 |
test -n "$1" || return |
|
5 |
eval $(systemctl show $1 | egrep '^(ExecMainStatus|Result|ActiveState|SubState|Type)=') |
|
6 |
if test -n "$Type"; then |
|
7 |
test $ExecMainStatus -eq 0 \ |
|
8 |
&& test $Result = 'success' \ |
|
9 |
&& test $ActiveState = 'active' \ |
|
10 |
&& [[ ( $Type =~ ^(simple|forking|notify)$ && $SubState = 'running' ) || ( $Type = 'oneshot' && $SubState = 'exited' ) ]] \ |
|
11 |
|| echo "état du service anormal" |
|
12 |
else |
|
13 |
echo "service $1 inexistant" |
|
14 |
fi |
|
15 |
} |
|
16 | ||
17 |
function sys_state () { |
|
18 |
local failed_units= |
|
19 |
eval $(systemctl show | egrep '^(SystemState|NFailedUnits)=') |
|
20 |
if test $SystemState != "running" -o $NFailedUnits -ne 0; then |
|
quelques corrections sur la ...
|
21 |
echo "$SystemState mode ($NFailedUnits units failed):" |
22 |
echo "$(systemctl --failed --no-legend | awk ' |
|
ajout de la supervision
|
23 |
{ |
24 |
split($1, units, ".") |
|
25 |
failed[units[2]][units[1]]=1 |
|
26 |
numfailed[units[2]]++ |
|
27 |
} |
|
28 |
END { |
|
29 |
for (ut in failed) { |
|
quelques corrections sur la ...
|
30 |
print ut |
ajout de la supervision
|
31 |
for (un in failed[ut]) { |
32 |
last = --numfailed[ut] == 0 ? 1 : 0 |
|
quelques corrections sur la ...
|
33 |
print last ? "└─" : "├─", un |
ajout de la supervision
|
34 |
} |
35 |
} |
|
quelques corrections sur la ...
|
36 |
}')" |
ajout de la supervision
|
37 |
fi |
38 |
} |
|
ajout d'un test de mise à jo...
|
39 | |
40 |
function upgrades () { |
|
41 |
local log="/var/log/unattended-upgrades/unattended-upgrades.log" |
|
42 |
test -r $log || return |
|
43 |
local lastline=$(tail -1 $log) |
|
44 |
local lastentry=$(date +%s -d "$(cut -f1,2 -d' ' <<< $lastline)") |
|
45 |
test -n "$lastentry" || return |
|
46 |
local status=$(cut -f3 -d' ' <<< $lastline) |
|
fix typo dans le test d'upgr...
|
47 |
test $(($lastentry + 86400)) -lt $now && echo "pas de mise à jour depuis le ${lastline%% *}" |
ajout d'un test de mise à jo...
|
48 |
} |
monitoring des cerificats
|
49 | |
50 |
function certificates () { |
|
vérification des certificats...
|
51 |
_turn 24 || return |
monitoring des cerificats
|
52 |
for domain in /etc/letsencrypt/live/*; do |
53 |
local notAfter="$(openssl x509 -enddate -noout -in $domain/fullchain.pem)" |
|
54 |
local enddate=$(date +%s -d"${notAfter#*=}") |
|
55 |
local delay=$(date +%_j -d@$(($enddate - $now))) |
|
56 |
if test $delay -lt 10; then |
|
57 |
echo "${domain##*/} expire dans $delay jours" |
|
58 |
fi |
|
59 |
done |
|
60 |
} |
|
déplacement de l'autit de ch...
|
61 | |
62 |
function load_avg () { |
|
63 |
local procs=$(grep -c "^processor" /proc/cpuinfo) |
|
64 |
local load=($(</proc/loadavg)) |
|
65 |
local avg=(1 5 15) |
|
66 |
for ((i=0; i<${#avg[@]}; i++)); do |
|
67 |
test ${load[i]%.*} -ge $procs && echo "charge moyenne à ${avg[i]}min = ${load[i]}" |
|
68 |
done |
|
69 |
} |