supervision du service de SM...
|
1 |
#!/bin/bash |
2 | ||
3 | ||
4 |
eval $(systemctl show smsbot --property=ActiveState) |
|
5 |
test -n "$ActiveState" && test "$ActiveState" = 'active' || exit 1 |
|
6 | ||
7 |
NOW=$(date +%s) |
|
8 | ||
9 |
/usr/local/bin/smsapi "supervision réception" || exit 2 |
|
10 |
|
|
11 |
function test_reception () { |
|
12 |
flag=0 |
|
13 |
for i in $(seq ${2:-180}); do |
|
14 |
sleep ${3:-10} |
|
15 |
if test -e "$1"; then |
|
16 |
reception=$(stat -c %Y "$1") |
|
17 |
test $reception -gt $NOW && flag=1 && break |
|
18 |
fi |
|
19 |
done |
|
20 |
test $flag -ne 0 |
|
21 |
} |
|
22 | ||
23 |
function hilink () { |
|
24 |
perl -e ' |
|
25 |
use HiPi qw( :hilink ); |
|
26 |
use Encode qw(encode decode); |
|
27 |
use HiPi::Huawei::E3531; |
|
28 |
my $hlink = HiPi::Huawei::E3531->new(); |
|
29 |
my $reponse = $hlink->get_'$1'(); |
|
30 |
print "$reponse->{Count}\n"; |
|
31 |
for ($i = $reponse->{Count} - 1; $i >= 0; $i--) { |
|
32 |
my $msg = $reponse->{Messages}[$i]; |
|
33 |
foreach my $k (keys(%$msg)) { |
|
34 |
if ($k == "Content") { |
|
35 |
$msg->{$k} = encode("utf8", $msg->{$k}); |
|
36 |
} |
|
37 |
print "$k: $msg->{$k}\n"; |
|
38 |
} |
|
39 |
print "\n"; |
|
40 |
} |
|
41 |
' |
|
42 |
} |
|
43 | ||
44 |
function device_reboot () { |
|
45 |
perl -e ' |
|
46 |
use HiPi qw( :hilink ); |
|
47 |
use Encode qw(encode decode); |
|
48 |
use HiPi::Huawei::E3531; |
|
49 |
my $hlink = HiPi::Huawei::E3531->new(); |
|
50 |
my $reponse = $hlink->device_reboot(); |
|
51 |
' |
|
52 |
} |
|
53 | ||
54 |
if ! test_reception /dev/shm/smsbot.reception.ok; then |
|
55 |
msg='problème de réception' |
|
56 |
elif ! test_reception /dev/shm/smsbot.envoi.ok; then |
|
57 |
msg="problème d'envoi" |
|
58 |
fi |
|
59 | ||
60 |
if test -n "$msg"; then |
|
61 |
msmtp contact@paris12.pcf.fr << EOM |
|
62 |
Subject: SMSBOT $msg |
|
63 | ||
64 |
$(systemctl status smsbot) |
|
65 | ||
66 |
INBOX: |
|
67 |
$(hilink inbox) |
|
68 | ||
69 |
OUTBOX: |
|
70 |
$(hilink outbox) |
|
71 | ||
72 |
JOURNAL: |
|
73 |
$(sudo /bin/journalctl -u smsbot | tail) |
|
74 | ||
75 |
$(if test "$msg" = "problème d'envoi"; then sudo /bin/systemctl restart smsbot && echo "smsbot relancé" || echo "erreur $?"; fi) |
|
76 |
$(if test "$msg" = "problème de réception"; then sudo /bin/systemctl stop smsbot && device_reboot && sleep 30 && sudo /bin/systemctl start smsbot && echo "device rebooté" || echo "erreur $?"; fi) |
|
77 |
EOM |
|
78 |
fi |