Spero che questo aiuti un po '.
Quindi ti darò un programma che ho scritto, perché avevo problemi con cron funzionante. Sfortunatamente non conosco lo scripting della shell, quindi questo è in Python, ma ha funzionato per me ed è piuttosto semplice, ma carino. Mi dispiace non aver commentato il mio codice, ma non volevo davvero ripassarlo. So che alcune parti potrebbero non essere le migliori, ma funziona.
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()
Guida veloce
Apri Idle, copia> incolla.
Salva come filename.py
.
Terminale aperto.
Eseguilo con Python 3 (python3 nomefile.py`).
Inserisci l'ora che desideri pianificare per l'esecuzione di vnstat.
Inserisci il minuto che desideri di quell'ora.
Inserisci il numero di ore che desideri monitorare.
Inserisci la quantità di minuti che desideri monitorare.
Inserisci il dispositivo che stai monitorando (non sono passato attraverso e controllo degli errori, quindi se inserisci qualcosa come monkeybutt, proverà ad eseguire vnstat -i monkeybutt
, ogni 15 secondi, solo Ctrl+ Cout).
Il programma verrà eseguito ogni 15 secondi per vedere se il tempo corrisponde, non darà alcun messaggio. È pensato per essere eseguito in background. Una volta avviato, eseguirà uno scatto ogni 15 secondi della rete, sul dispositivo scelto. Usando il comando vnstat, più un contatore che dice quanti secondi hai lasciato del monitoraggio.
Dopo aver completato le scansioni ti verrà chiesto se vuoi uscire e ti darà un'opzione se vuoi mostrare un rapporto, altrimenti puoi semplicemente uscire. Tutto il materiale è comunque archiviato nel database vnstats.
Vecchia parte del post (potrebbe essere utile per alcune persone)
Potresti ottenere gnome-schedule, quindi inserire il tuo comando, ad esempio vnstat -h, e impostarlo ripetutamente durante i periodi che stai cercando di monitorare. Forse troppo semplice, ma si spera che qualcun altro possa espandersi ulteriormente.
Aggiuntivo (Modifica): non ho usato vnstat molto, motivo per cui speravo che qualcuno potesse espandersi su quella parte, ma con la pianificazione di gnome, puoi programmare un comando da eseguire durante specifiche parti della giornata. Quindi, usando vntstat -tr -l (interruttore del traffico, monitora il traffico in tempo reale), mostreresti il traffico durante l'esecuzione (che puoi programmare in gnome-schedule, ma potresti dover manualmente Ctrl+ C] out.)
Altrimenti sono sicuro che potresti reindirizzare questo in un file, o utilizzare il programma di output grafico per vnstat se ce l'hai. Il programma di output grafico vnstati -i 'filename'
verrà emesso nel file png. Se vuoi ulteriori comandi vnstat --longhel
p ha più comandi.
(Schermata di esempio su come inserire le cose nella pianificazione di gnome.)
Sai come ottenere un'istantanea della larghezza di banda usando già vnstat o hai bisogno di ulteriore aiuto su questi comandi? Posso provare a lavorare di più con il programma.