-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnarodmon_send.sh
96 lines (81 loc) · 2.65 KB
/
narodmon_send.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/bin/sh
# fake "get data" for initialization
digitemp_DS9097 -q -i -a -s /dev/ttyUSB0 >/dev/nul
# get heading
NAME=`uname -n`
MAC=`cat /sys/class/net/eth1/address`
EMAIL_TO='email@to.send.errors'
# add heading
echo "#$MAC#$NAME" >> /var/log/narodmon1
# get data
RX=`cat /sys/class/net/eth1/statistics/rx_bytes`
TX=`cat /sys/class/net/eth1/statistics/tx_bytes`
TIME=$(date -I"seconds")
CELSIUS=$(digitemp_DS9097 -q -i -a -s /dev/ttyUSB0 | awk '{FS=" "; if($2==":") { mac[NR-1]=$1;}; if($4=="Sensor") { print "#"mac[$5]"#"$7;}}')
# add data
echo "$CELSIUS#$TIME" >> /var/log/narodmon1
echo "#$MAC:RX#$RX#$TIME" >> /var/log/narodmon1
echo "#$MAC:TX#$TX#$TIME" >> /var/log/narodmon1
# add ending "##"
echo "$(sed '/##/d' /var/log/narodmon1 | awk '!($0 in a) {a[$0];print}')" > /var/log/narodmon1
echo "##" >> /var/log/narodmon1
# lenght of file >0
LC=`cat /var/log/narodmon1 | wc -l`
if [ $LC -lt 2 ]; then
echo -e "$TIME size is 0 bytes\n" >> /var/log/narodmon_error
exit 1
fi
# lenght of file <4000
maxsize=4000
actualsize=$(wc -c <"/var/log/narodmon1")
if [ $actualsize -ge $maxsize ]; then
echo -e "$TIME size is $actualsize bytes\n" >> /var/log/narodmon_error
# copy datafile to narodmon#$TIME
cp /var/log/narodmon1 /var/log/narodmon#$TIME
# clear datafile
cp /dev/null /var/log/narodmon1
# email to user
echo "narodmon filesize is $actualsize bytes" | ssmtp $EMAIL_TO
exit 1
fi
# site is pinging?
ping -4 -c 3 narodmon.ru >nul
if [ $? -gt 0 ]; then
echo -e "$TIME narodmon.ru DOES NOT RESPOND\n" >> /var/log/narodmon_error
exit 1
fi
# sending 2-pass
run2=1st
for i in 1 2
do
# send datafile
RESULT=$(cat /var/log/narodmon1 | nc narodmon.ru 8283)
# sending time
TIME=$(date -I"seconds")
# logging 2nd pass result
if [ "$run2" == "2nd" ]; then
echo -e "$run2 $TIME RESULT=$RESULT\n" >> /var/log/narodmon_error
fi
# if OK
if [ "$RESULT" == "OK" ]; then
# clear datafile
cp /dev/null /var/log/narodmon1
break
fi
# if errors
echo -e "$run2 $TIME RESULT=$RESULT\n" >> /var/log/narodmon_error
# if datafile damaged
if echo "$RESULT" | grep -q damaged ; then
# copy datafile to narodmon#$TIME
cp /var/log/narodmon1 /var/log/narodmon#$TIME
# clear datafile
cp /dev/null /var/log/narodmon1
# email to user
echo "narodmon sending result is $RESULT" | ssmtp $EMAIL_TO
break
fi
run2=2nd
# pause 130 sec
ping -4 -c 130 -i 1 127.0.0.1 >nul
done
exit 1