Semoga ini sedikit membantu.
Jadi saya akan memberi Anda program yang saya tulis, karena saya mengalami masalah dengan cron working. Sayangnya saya tidak tahu scripting shell jadi ini dalam python, tapi itu berhasil untuk saya, dan itu sangat sederhana, tetapi bagus. Maaf saya tidak berkomentar kode saya, tapi saya benar-benar tidak ingin kembali melaluinya. Saya tahu beberapa bagian mungkin bukan yang terbaik, tetapi berhasil.
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()
Panduan Cepat
Buka Idle, salin> tempel.
Simpan sebagai filename.py
.
Buka Terminal.
Jalankan dengan Python 3 (python3 filename.py`).
Masukkan jam yang Anda ingin jadwalkan agar vnstat dijalankan.
Masukkan menit yang Anda inginkan dari jam itu.
Masukkan jumlah jam yang Anda inginkan untuk dipantau.
Masukkan jumlah menit yang ingin Anda pantau.
Masukkan perangkat yang Anda pantau (saya tidak pergi dan memeriksa kesalahan, jadi jika Anda memasukkan sesuatu seperti monkeybutt, itu akan mencoba dan menjalankan vnstat -i monkeybutt
, setiap 15 detik, cukup Ctrl+ Ckeluar).
Program akan dijalankan setiap 15 detik untuk melihat apakah waktunya cocok, tidak akan memberikan pesan apa pun. Itu dimaksudkan untuk dijalankan di latar belakang. Setelah dimulai, itu akan mengambil bidikan setiap 15 detik dari jaringan, pada perangkat yang Anda pilih. Menggunakan perintah vnstat, plus penghitung yang mengatakan berapa detik yang tersisa dari pemantauan.
Setelah menyelesaikan pemindaian, ia akan menanyakan apakah Anda ingin keluar, dan memberi Anda opsi jika Anda ingin menunjukkan laporan, jika tidak Anda bisa langsung keluar. Semua barang disimpan dalam basis data vnstats.
Bagian lama pos (mungkin bermanfaat bagi sebagian orang)
Anda bisa mendapatkan gnome-schedule, lalu memasukkan perintah Anda misalnya vnstat -h, dan mengaturnya berulang pada saat Anda mencoba memantau. Mungkin terlalu sederhana, tapi semoga orang lain bisa berkembang lebih jauh.
Tambahan (Sunting): Saya belum menggunakan vnstat terlalu banyak, itulah sebabnya saya berharap seseorang dapat memperluas pada bagian itu, tetapi dengan jadwal gnome, Anda dapat menjadwalkan perintah untuk mengeksekusi selama bagian-bagian tertentu hari itu. Jadi menggunakan vntstat -tr -l (traffic switch, monitor traffic langsung), akan menunjukkan traffic saat berjalan (yang bisa Anda jadwalkan di gnome-schedule, tetapi Anda mungkin harus secara manual Ctrl+ C] keluar.)
Kalau tidak, saya yakin Anda bisa menyalurkannya ke file, atau menggunakan program output grafis untuk vnstat jika Anda memilikinya. Program output grafis vnstati -i 'filename'
akan menampilkannya ke file png. Jika Anda ingin perintah lebih lanjut vnstat --longhel
p memiliki lebih banyak perintah.
(Contoh layar tentang bagaimana memasukkan sesuatu ke dalam jadwal gnome.)
Apakah Anda tahu cara mendapatkan 'snapshot' dari bandwidth menggunakan vnstat, atau apakah Anda memerlukan bantuan lebih lanjut tentang perintah-perintah itu? Saya bisa mencoba bekerja dengan program lebih banyak.