Hy vọng điều này sẽ giúp một chút.
Vì vậy, tôi sẽ cung cấp cho bạn một chương trình tôi đã viết, bởi vì tôi gặp vấn đề với cron làm việc. Tôi không biết shell script rất tiếc vì đây là python, nhưng nó hoạt động với tôi, và nó khá đơn giản, nhưng hay. Xin lỗi tôi đã không nhận xét mã của tôi, nhưng tôi thực sự không muốn quay lại nó. Tôi biết một số phần có thể không phải là tốt nhất, nhưng nó hoạt động.
def main():
while True:
import time
import os
from subprocess import call
schedule=tim3()
print(schedule)
interface=" "
while interface==" ":
interface=input("""
Enter your interface:
(Be careful there is no error checking for this part)
Examples are eth0, wlan0...
""")
if interface == "":
break
while True:
x= clogger(schedule[2],schedule[3],schedule[4],\
schedule[5],interface)
if x== "done":
break
while True:
x= exit_q()
if x== "y":
user_exit=input('''
How would you like your output?
Type (From vnstat --longhelp):
q, --query query database
h, --hours show hours
d, --days show days
m, --months show months
w, --weeks show weeks
t, --top10 show top10
s, --short use short output
''')
call(["vnstat", "-"+str(user_exit), "-i", str(interface),])
break
break
def tim3():
import time
#current_time=["16", "20"]
tim3= time.strftime("%H %M")
current_time=tim3.split()
print("""
"""+ str(tim3)+"""
Current time
""")
hour=current_time[0]
minute=current_time[1]
ui = inputs()
newlist=[hour, minute]
schedule=newlist+ui
print(schedule)
return schedule
def inputs():
print("""
------------------------------------------
""")
while True:
start_hour=(input("Enter the starting hour (24hr): "))
start_min=(input("Enter the starting minute: "))
x = checker(start_hour, start_min)
endh=(input("How many hours would you like to run? "))
endm=(input("How many minutes would you like to run? "))
y = checker(endh,endm)
if str(x)=="Great":
if str(y) == "Great":
return [start_hour, start_min, endh, endm]
def checker(h,m):
error=0
message=("Incorrect Format")
while error==0:
if h =="":
print(message)
break
if len(str(h))> 2:
print(message)
break
if m =="":
print(message)
break
if len(str(m))>2:
print(message)
break
for x in str(h):
if x.isdigit() == False:
error+=1
print(message)
break
if error>0:
print(message)
break
for y in str(m):
if y.isdigit() == False:
error+=1
print(message)
break
if error>0:
print(message)
break
else:
return("Great")
def clogger(s1,s2,t1,t2,I):
import time
import os
from subprocess import call
total_time=int(t1)*60*60+int(t2)*60
while True:
h1=int(time.strftime('%H'))
m2=int(time.strftime('%M'))
if len(str(s1))<2:
s1="0"+str(s1)
if len(str(s2))<2:
s2="0"+str(s2)
if len(str(h1))<2:
h1="0"+str(h1)
if str(h1)==str(s1) and str(m2)==str(s2):
while True:
if total_time>0:
call (["vnstat", "-i",str(I)])
time.sleep(15)
total_time=total_time-15
print(total_time," seconds")
elif total_time<=0:
return "done"
time.sleep(15)
def exit_q():
while True:
question=input("Would you like to show a report? (y/n) ")
if question == "y" or question == "n":
return question
main()
Hướng dẫn nhanh
Mở Idle, sao chép> dán.
Lưu như filename.py
.
Mở Terminal.
Chạy nó với Python 3 (python3 filename.py`).
Đặt trong giờ bạn muốn lên lịch để vnstat chạy.
Đặt trong phút bạn muốn của giờ đó.
Đặt số giờ bạn muốn nó theo dõi.
Đặt số phút bạn muốn nó theo dõi.
Nhập thiết bị bạn đang theo dõi (Tôi đã không kiểm tra và kiểm tra lỗi, vì vậy nếu bạn nhập một cái gì đó như khỉbutt, nó sẽ thử và chạy vnstat -i monkeybutt
, cứ sau 15 giây, chỉ cần Ctrl+ Cra).
Chương trình sẽ chạy trong mỗi 15 giây để xem thời gian có khớp hay không, nó sẽ không đưa ra bất kỳ tin nhắn nào. Nó có nghĩa là để chạy trong nền. Khi nó bắt đầu, nó sẽ chụp cứ sau 15 giây trên mạng, trên thiết bị bạn chọn. Sử dụng lệnh vnstat, cộng với bộ đếm cho biết bạn còn bao nhiêu giây để theo dõi.
Sau khi hoàn thành quá trình quét, nó sẽ hỏi bạn có muốn thoát hay không và cung cấp cho bạn một tùy chọn nếu bạn muốn hiển thị báo cáo, nếu không bạn chỉ có thể thoát. Tất cả các công cụ được lưu trữ trong cơ sở dữ liệu vnstats dù sao.
Phần cũ của bài đăng (có thể hữu ích cho một số người)
Bạn có thể nhận được lịch trình gnome, sau đó đưa vào lệnh của bạn ví dụ vnstat -h và đặt nó lặp lại trong thời gian bạn đang cố gắng theo dõi. Có thể quá đơn giản, nhưng hy vọng người khác có thể mở rộng hơn nữa.
Bổ sung (Chỉnh sửa): Tôi chưa sử dụng vnstat nhiều, đó là lý do tại sao tôi hy vọng ai đó có thể mở rộng phần đó, nhưng với lịch trình gnome, bạn có thể lên lịch để thực hiện lệnh trong các phần cụ thể trong ngày. Vì vậy, sử dụng vntstat -tr -l (công tắc giao thông, theo dõi lưu lượng truy cập trực tiếp), sẽ hiển thị lưu lượng truy cập trong khi chạy (mà bạn có thể lên lịch trong lịch trình gnome, nhưng bạn có thể phải tự tắt Ctrl+ C].)
Mặt khác, tôi chắc chắn rằng bạn có thể chuyển dữ liệu này thành một tệp hoặc sử dụng chương trình đầu ra đồ họa cho vnstat nếu bạn có. Chương trình đầu ra đồ họa vnstati -i 'filename'
sẽ xuất nó thành tập tin png. Nếu bạn muốn thêm lệnh vnstat --longhel
p có nhiều lệnh hơn.
(Màn hình mẫu về cách đưa mọi thứ vào lịch trình gnome.)
Bạn có biết làm thế nào để có được một 'ảnh chụp nhanh' băng thông bằng cách sử dụng vnstat không, hoặc bạn có cần trợ giúp thêm về các lệnh đó không? Tôi có thể cố gắng làm việc với chương trình nhiều hơn.