หวังว่านี่จะช่วยได้บ้าง
ดังนั้นฉันจะให้โปรแกรมที่ฉันเขียนเพราะคุณมีปัญหากับการทำงาน cron ฉันไม่ทราบว่าการเขียนสคริปต์เชลล์น่าเสียดายดังนั้นนี่เป็นงูหลาม แต่มันใช้งานได้สำหรับฉันและมันค่อนข้างง่าย แต่ก็ดี ขออภัยฉันไม่ได้แสดงความคิดเห็นรหัสของฉัน แต่ฉันไม่ต้องการกลับไปที่มัน ฉันรู้ว่าบางส่วนอาจไม่ได้ดีที่สุด แต่ใช้งานได้
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()
คู่มือฉบับย่อ
เปิด Idle, copy> paste
filename.py
บันทึกเป็น
เปิด Terminal
เรียกใช้ด้วย Python 3 (python3 filename.py`)
ใส่ในชั่วโมงที่คุณต้องการกำหนดให้ vnstat ทำงาน
ใส่ในนาทีที่คุณต้องการของชั่วโมงนั้น
ใส่จำนวนชั่วโมงที่คุณต้องการตรวจสอบ
ใส่จำนวนนาทีที่คุณต้องการตรวจสอบ
ป้อนอุปกรณ์ที่คุณกำลังตรวจสอบ (ฉันไม่ได้ผ่านและตรวจสอบข้อผิดพลาดดังนั้นถ้าคุณป้อนบางอย่างเช่น monkeybutt มันจะพยายามและทำงานvnstat -i monkeybutt
ทุก ๆ 15 วินาทีเพิ่งCtrl+ Cออก)
โปรแกรมจะทำงานทุก ๆ 15 วินาทีเพื่อดูว่าเวลาตรงกันหรือไม่โปรแกรมจะไม่ส่งข้อความใด ๆ มันหมายถึงการทำงานในพื้นหลัง เมื่อเริ่มต้นมันจะทำการถ่ายภาพทุก ๆ 15 วินาทีของเครือข่ายบนอุปกรณ์ที่คุณเลือก การใช้คำสั่ง vnstat รวมถึงตัวนับที่บอกว่าคุณเหลือเวลาในการมอนิเตอร์กี่วินาที
หลังจากเสร็จสิ้นการสแกนแล้วระบบจะถามว่าคุณต้องการออกจากระบบหรือไม่และให้ตัวเลือกแก่คุณหากคุณต้องการแสดงรายงานไม่เช่นนั้นคุณก็สามารถออกได้ ทุกสิ่งถูกเก็บไว้ในฐานข้อมูล vnstats ต่อไป
ส่วนเก่าของโพสต์ (อาจเป็นประโยชน์กับบางคน)
คุณสามารถรับ gnome-schedule จากนั้นใส่คำสั่งของคุณตัวอย่างเช่น vnstat -h และตั้งค่าให้เกิดขึ้นอีกครั้งในระหว่างที่คุณพยายามตรวจสอบ อาจจะง่ายเกินไป แต่หวังว่าคนอื่นจะสามารถขยายเพิ่มเติมได้
เพิ่มเติม (แก้ไข): ฉันไม่ได้ใช้ vnstat มากซึ่งเป็นสาเหตุที่ฉันหวังว่าจะมีใครบางคนสามารถขยายส่วนนั้นได้ แต่ด้วย gnome-schedule คุณสามารถกำหนดเวลาคำสั่งให้ดำเนินการระหว่างส่วนที่เฉพาะเจาะจงของวัน ดังนั้นการใช้ vntstat -tr -l (สวิทช์การจราจร, ตรวจสอบทราฟฟิกแบบสด) จะแสดงทราฟฟิกในขณะที่ทำงาน (ซึ่งคุณสามารถกำหนดตารางเวลาใน gnome-schedule ได้ แต่คุณอาจต้องCtrl+ ด้วยตนเองC)
มิฉะนั้นฉันแน่ใจว่าคุณสามารถไพพ์นี้เป็นไฟล์หรือใช้โปรแกรมแสดงผลกราฟิกสำหรับ vnstat ถ้าคุณมีสิ่งนั้น โปรแกรมแสดงผลกราฟิกvnstati -i 'filename'
จะถูกส่งออกไปยังไฟล์ png หากคุณต้องการคำสั่งเพิ่มเติมvnstat --longhel
p มีคำสั่งเพิ่มเติม
(หน้าจอตัวอย่างของการใส่สิ่งต่าง ๆ ลงใน gnome-schedule)
คุณรู้วิธีรับ 'snapshot' ของแบนด์วิดท์โดยใช้ vnstat แล้วหรือคุณต้องการความช่วยเหลือเพิ่มเติมเกี่ยวกับคำสั่งเหล่านั้นหรือไม่? ฉันสามารถลองทำงานกับโปรแกรมมากขึ้น