Hier sind einige Programme, mit denen ich meine Systeme überwache. Jede Variation davon könnte als Grundlage für ein Programm verwendet werden, das wie unten beschrieben über PiGPIO auf die Ergebnisse einwirkt.
fping
in Python, um Verzögerungen zu überwachen und festzustellen, ob Systeme aktiv sind.
sudo apt-get update
sudo apt-get install fping
from subprocess import Popen, PIPE
.
.
.
cmd = 'fping -C 1 -q www.myaddress.com'
p = Popen(cmd,stdout=PIPE, stderr=PIPE, shell=True)
stdout, stderr = p.communicate()
Beachten Sie, dass der Ausgang in stderr ist und so aussieht:
50.87.249.67 : 6.30 for a positive response
oder
50.87.249.67 : - for a non response
ODER
Sie können diese alternative cmd
Befehlszeichenfolge im selben Code verwenden:
from subprocess import Popen, PIPE
.
.
.
cmd = 'fping www.myaddress.com'
p = Popen(cmd,stdout=PIPE, stderr=PIPE, shell=True)
stdout, stderr = p.communicate()
Beachten Sie, dass der Ausgang in stderr ist und so aussieht:
wo das Ergebnis entweder ist
www.myaddress.com is alive
oder
www.myaddress.com: Name or service not known
-----------------------------------------------
Um dann externe Geräte zu steuern, empfehle ich immer piGPIO
piGPIO-Bibliotheksschnittstelle
Beispiele für piGPIO-Bibliotheken
Ich verwende eine ähnliche Methode für einen Ping-Delay-Monitor:
#!/usr/bin/python
import os
import time
from subprocess import Popen, PIPE
from datetime import datetime
os.system('clear')
os.chdir("/home/pi/pymon"
tab = "\t"
während wahr:
tt = datetime.now()
ts = " "
ts = str(getattr(tt,'hour')) + ":"
if getattr(tt,'minute')<10:
ts = ts + '0'
ss = ts + str(getattr(tt,'minute')) + ":"
if getattr(tt,'second')<10:
ts = ts + '0'
ts = ts + str(getattr(tt,'second'))
td = datetime.today()
ds = " "
ds = str(td.year)
if td.month<10 :
ds = ds +"0"
ds = ds + str(td.month)
if td.day<10 :
ds = ds + "0"
ds = ds + str(td.day)
datestr = str(datetime.now().date())
datestr = datestr[:10]
timestr = str(datetime.now().time())
timestr = timestr[:8]
cmd = 'fping -C 1 -q www.SDsolarBlog.com'
p = Popen(cmd,stdout=PIPE, stderr=PIPE, shell=True)
stdout, stderr = p.communicate()
outline = datestr + tab + timestr + tab + stderr
f = open("/home/pi/pymon/today.dat","a")
f.write(outline)
f.close()
os.system("tail -n 1 today.dat")
print
time.sleep(60.0)
Dadurch wird eine Datendatei erstellt, die wie folgt aussieht:
2018-04-04 00:17:52 50.87.249.67 : 6.56
2018-04-04 00:18:52 50.87.249.67 : -
2018-04-04 00:19:52 50.87.249.67 : 7.41
2018-04-04 00:20:52 50.87.249.67 : 10.99
Die Zeile mit dem -
ist eine Zeile, in der innerhalb von 3 Sekunden keine Antwort erfolgte.
Ich benutze diese Ausgabe mit einem Gnuplot-Programm, um alles zu zeichnen.
set title "Ping Times"
set xlabel "Time"
set ylabel "Ping Times"
set yrange [0:*]
set grid
set timestamp
unset mouse
unset log
set key top left
set xdata time
set timefmt '%H:%M:%S'
set xtics format '%H:%M'
set datafile missing "-"
set y2tics
set terminal x11
set style fill solid 1.0
plot 50 lw 1 lc rgb "black" notitle, \
100 lw 1 lc rgb "gray" notitle, \
"today.dat" using 2:5 skip 2 with lines lc rgb "red" t "Delay"
pause 11
reread
um eine Live-Handlung zu bekommen:
Dies ähnelt dem Code, den ich für einen anderen Befehl verwende:
Was ist die maximale / minimale Betriebstemperatur?