Dưới đây là một số chương trình tôi sử dụng để giám sát hệ thống của mình. Bất kỳ biến thể nào trong số này sẽ có thể được sử dụng làm cơ sở cho một chương trình hoạt động dựa trên kết quả thông qua PiGPIO như được mô tả dưới đây.
fping
trong Python để theo dõi sự chậm trễ và để xem các hệ thống còn sống hay không.
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()
LƯU Ý R OUTNG ĐẦU RA LÀ TRONG stderr VÀ CUỘC SỐNG NHƯ NÀY:
50.87.249.67 : 6.30 for a positive response
hoặc là
50.87.249.67 : - for a non response
HOẶC LÀ
Bạn có thể sử dụng cmd
chuỗi lệnh thay thế này trong cùng một mã:
from subprocess import Popen, PIPE
.
.
.
cmd = 'fping www.myaddress.com'
p = Popen(cmd,stdout=PIPE, stderr=PIPE, shell=True)
stdout, stderr = p.communicate()
LƯU Ý R OUTNG ĐẦU RA LÀ TRONG stderr VÀ CUỘC SỐNG NHƯ NÀY:
kết quả là một trong hai
www.myaddress.com is alive
hoặc là
www.myaddress.com: Name or service not known
-----------------------------------------------
Sau đó, để kiểm soát các thiết bị bên ngoài, tôi luôn khuyên bạn nên piGPIO
Giao diện thư viện piGPIO
Ví dụ về thư viện piGPIO
Tôi sử dụng một phương pháp tương tự cho màn hình trễ ping:
#!/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"
trong khi Đúng:
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)
tạo ra một tệp dữ liệu trông giống như:
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
Dòng với -
dòng là không có phản hồi trong 3 giây.
Tôi sử dụng đầu ra này với một chương trình gnuplot để vẽ ra tất cả.
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
để có được một cốt truyện trực tiếp:
Điều này tương tự với mã tôi sử dụng cho một lệnh khác:
Nhiệt độ chạy tối đa / tối thiểu là bao nhiêu?