Espérons que cela aide un peu.
Je vais donc vous donner un programme que j'ai écrit, parce que j'avais des problèmes avec le travail cron. Je ne connais malheureusement pas les scripts shell, donc c'est en python, mais cela a fonctionné pour moi, et c'est assez simple, mais agréable. Désolé, je n'ai pas commenté mon code, mais je ne voulais vraiment pas y revenir. Je sais que certaines parties ne sont peut-être pas les meilleures, mais cela fonctionne.
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()
Guide rapide
Ouvrez Inactif, copiez> collez.
Enregistrer sous filename.py
.
Ouvrez le terminal.
Exécutez-le avec Python 3 (python3 filename.py`).
Entrez l'heure à laquelle vous souhaitez planifier l'exécution de vnstat.
Mettez dans la minute que vous voulez de cette heure.
Mettez le nombre d'heures que vous souhaitez qu'il surveille.
Mettez le nombre de minutes que vous voulez qu'il surveille.
Entrez l'appareil que vous surveillez (je n'ai pas effectué de vérification d'erreur, donc si vous entrez quelque chose comme monkeybutt, il essaiera de s'exécuter vnstat -i monkeybutt
, toutes les 15 secondes, juste Ctrl+ Cout).
Le programme se déroulera toutes les 15 secondes pour voir si l'heure correspond, il ne donnera aucun message. Il est censé être exécuté en arrière-plan. Une fois démarré, il prendra une photo toutes les 15 secondes du réseau, sur l'appareil que vous avez choisi. Utilisation de la commande vnstat, plus un compteur indiquant combien de secondes il vous reste de surveillance.
Après avoir terminé les analyses, il vous demandera si vous souhaitez quitter et vous donnera une option si vous souhaitez afficher un rapport, sinon vous pouvez simplement quitter. De toute façon, tout est stocké dans la base de données vnstats.
Ancienne partie du message (peut être utile à certaines personnes)
Vous pouvez obtenir gnome-schedule, puis entrez votre commande, par exemple vnstat -h, et définissez-la de manière répétée pendant les périodes que vous essayez de surveiller. Peut-être trop simple, mais j'espère que quelqu'un d'autre pourrait se développer davantage.
Supplémentaire (Modifier): Je n'ai pas beaucoup utilisé vnstat, c'est pourquoi j'espérais que quelqu'un pourrait développer cette partie, mais avec gnome-schedule, vous pouvez planifier une commande à exécuter pendant des parties spécifiques de la journée. Donc, utiliser vntstat -tr -l (commutateur de trafic, surveiller le trafic en direct), afficherait le trafic pendant l'exécution (que vous pouvez planifier dans gnome-schedule, mais vous devrez peut-être manuellement Ctrl+ C].)
Sinon, je suis sûr que vous pourriez diriger ceci dans un fichier, ou utiliser le programme de sortie graphique pour vnstat si vous en avez. Le programme de sortie graphique le vnstati -i 'filename'
sortira en fichier png. Si vous voulez d'autres commandes, vnstat --longhel
p a plus de commandes.
(Exemple d'écran sur la façon de mettre les choses en programme gnome.)
Savez-vous comment obtenir un «instantané» de la bande passante en utilisant déjà vnstat, ou avez-vous besoin d'une aide supplémentaire sur ces commandes? Je peux essayer de travailler davantage avec le programme.