#!/bin/bash eval $(systemctl show smsbot --property=ActiveState) test -n "$ActiveState" && test "$ActiveState" = 'active' || exit 1 NOW=$(date +%s) /usr/local/bin/smsapi "supervision réception" || exit 2 function test_reception () { flag=0 for i in $(seq ${2:-180}); do sleep ${3:-10} if test -e "$1"; then reception=$(stat -c %Y "$1") test $reception -gt $NOW && flag=1 && break fi done test $flag -ne 0 } function hilink () { perl -e ' use HiPi qw( :hilink ); use Encode qw(encode decode); use HiPi::Huawei::E3531; my $hlink = HiPi::Huawei::E3531->new(); my $reponse = $hlink->get_'$1'(); print "$reponse->{Count}\n"; for ($i = $reponse->{Count} - 1; $i >= 0; $i--) { my $msg = $reponse->{Messages}[$i]; foreach my $k (keys(%$msg)) { if ($k == "Content") { $msg->{$k} = encode("utf8", $msg->{$k}); } print "$k: $msg->{$k}\n"; } print "\n"; } ' } function device_reboot () { perl -e ' use HiPi qw( :hilink ); use Encode qw(encode decode); use HiPi::Huawei::E3531; my $hlink = HiPi::Huawei::E3531->new(); my $reponse = $hlink->device_reboot(); ' } if ! test_reception /dev/shm/smsbot.reception.ok; then msg='problème de réception' elif ! test_reception /dev/shm/smsbot.envoi.ok; then msg="problème d'envoi" fi if test -n "$msg"; then msmtp contact@paris12.pcf.fr << EOM Subject: SMSBOT $msg $(systemctl status smsbot) INBOX: $(hilink inbox) OUTBOX: $(hilink outbox) JOURNAL: $(sudo /bin/journalctl -u smsbot | tail) $(if test "$msg" = "problème d'envoi"; then sudo /bin/systemctl restart smsbot && echo "smsbot relancé" || echo "erreur $?"; fi) $(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) EOM fi