Hoffentlich hilft das ein bisschen.
Also werde ich Ihnen ein Programm geben, das ich geschrieben habe, weil ich Probleme mit der Arbeit mit Cron hatte. Ich kenne Shell-Scripting leider nicht, daher ist dies in Python, aber es hat bei mir funktioniert und es ist ziemlich einfach, aber nett. Entschuldigung, ich habe meinen Code nicht kommentiert, aber ich wollte ihn wirklich nicht noch einmal durchgehen. Ich weiß, dass einige Teile vielleicht nicht die besten sind, aber es funktioniert.
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()
Kurzanleitung
Leerlauf öffnen, kopieren> einfügen.
Speichern unter filename.py
.
Terminal öffnen.
Führen Sie es mit Python 3 (python3 filename.py`) aus.
Geben Sie die Stunde ein, für die vnstat ausgeführt werden soll.
Geben Sie die gewünschte Minute für diese Stunde ein.
Geben Sie die Anzahl der Stunden an, die überwacht werden sollen.
Geben Sie die Anzahl der Minuten an, auf die überwacht werden soll.
Geben Sie das Gerät ein, das Sie überwachen (ich habe keine Fehlerprüfung durchgeführt. Wenn Sie also etwas wie monkeybutt eingeben, wird es vnstat -i monkeybutt
alle 15 Sekunden ausgeführt, nur Ctrl+ Cout).
Das Programm wird alle 15 Sekunden durchlaufen, um festzustellen, ob die Zeit übereinstimmt. Es werden keine Nachrichten ausgegeben. Es soll im Hintergrund laufen. Sobald es gestartet ist, wird alle 15 Sekunden eine Aufnahme des Netzwerks auf dem von Ihnen ausgewählten Gerät gemacht. Verwenden Sie den Befehl vnstat sowie einen Zähler, der angibt, wie viele Sekunden noch für die Überwachung übrig sind.
Nach Abschluss der Scans werden Sie gefragt, ob Sie das Programm beenden möchten, und Sie erhalten eine Option, wenn Sie einen Bericht anzeigen möchten. Andernfalls können Sie das Programm einfach beenden. Das ganze Zeug wird sowieso in der vnstats-Datenbank gespeichert.
Alter Teil des Beitrags (kann für einige Leute hilfreich sein)
Sie können den Gnome-Zeitplan abrufen, dann Ihren Befehl eingeben, z. B. vnstat -h, und festlegen, dass er zu Zeiten, die Sie überwachen möchten, erneut auftritt. Vielleicht zu einfach, aber hoffentlich könnte jemand anderes weiter expandieren.
Zusätzlich (Bearbeiten): Ich habe vnstat nicht sehr oft verwendet, weshalb ich gehofft hatte, dass jemand diesen Teil erweitern könnte, aber mit dem Gnome-Zeitplan können Sie einen Befehl planen, der während bestimmter Teile des Tages ausgeführt wird. Wenn Sie also vntstat -tr -l (Verkehrsschalter, Live-Verkehr überwachen) verwenden, wird der Verkehr während der Ausführung angezeigt (was Sie im Gnome-Zeitplan planen können, aber möglicherweise manuell Ctrl+ C] ausgeben müssen.)
Andernfalls können Sie dies sicher in eine Datei weiterleiten oder das grafische Ausgabeprogramm für vnstat verwenden, wenn Sie dies haben. Das grafische Ausgabeprogramm gibt vnstati -i 'filename'
es in eine PNG-Datei aus. Wenn Sie weitere Befehle wünschen, hat vnstat --longhel
p mehr Befehle.
(Beispielbildschirm, wie man Dinge in den Gnom-Zeitplan einfügt.)
Wissen Sie, wie Sie mit vnstat bereits einen "Schnappschuss" der Bandbreite erstellen können, oder benötigen Sie weitere Hilfe zu diesen Befehlen? Ich kann versuchen, mehr mit dem Programm zu arbeiten.