J'espère que cela vous aidera un peu.
Je vais donc vous donner un programme que j'ai écrit, car j'avais des problèmes avec le fonctionnement de cron. Je ne connais pas le Shell script malheureusement donc c'est en Python, mais ça a marché pour moi, et c'est assez simple, mais sympa. Désolé de ne pas avoir commenté mon code, mais je n'avais vraiment pas envie d'y revenir. Je sais que certaines parties ne sont peut-être pas les meilleures, mais ça marche.
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 Idle, copier>coller.
-
Enregistrer sous filename.py
.
-
Terminal ouvert.
-
Exécutez-le avec Python 3 (python3 nomfichier.py`).
-
Entrez l'heure à laquelle vous voulez programmer l'exécution de vnstat.
-
Mettez la minute que vous voulez de cette heure.
-
Indiquez le nombre d'heures pendant lesquelles vous voulez qu'il surveille.
-
Indiquez le nombre de minutes pendant lesquelles vous souhaitez que la surveillance soit assurée.
Entrez le dispositif que vous surveillez (je n'ai pas vérifié les erreurs, donc si vous entrez quelque chose comme monkeybutt, il essaiera d'exécuter vnstat -i monkeybutt
toutes les 15 secondes, juste Ctrl + C out).
Le programme s'exécute toutes les 15 secondes pour voir si l'heure correspond, il ne donne aucun message. Il est destiné à être exécuté en arrière-plan. Une fois lancé, il prendra une photo du réseau toutes les 15 secondes, sur le périphérique que vous avez choisi. En utilisant la commande vnstat, plus un compteur indiquant combien de secondes il vous reste à surveiller.
Une fois les analyses terminées, le logiciel vous demandera si vous voulez quitter, et vous donnera la possibilité d'afficher un rapport, sinon vous pouvez simplement quitter. Tous les éléments sont stockés dans la base de données vnstats de toute façon.
Ancienne partie du message (peut être utile à certaines personnes)
Vous pourriez obtenir gnome-schedule, puis mettre votre commande, par exemple vnstat -h, et la faire se répéter pendant les périodes que vous essayez de surveiller. Peut-être trop simple, mais j'espère que quelqu'un d'autre pourra développer davantage.
Additional(Edit) : Je n'ai pas beaucoup utilisé vnstat, c'est pourquoi j'espérais que quelqu'un pourrait développer cette partie, mais avec le gnome-schedule, vous pouvez programmer une commande pour qu'elle s'exécute à des moments spécifiques de la journée. Ainsi, en utilisant vntstat -tr -l (commutateur de trafic, surveiller le trafic en direct), vous verrez le trafic en cours d'exécution (ce que vous pouvez programmer dans gnome-schedule, mais vous devrez peut-être le faire manuellement). Ctrl + C ).
Sinon, je suis sûr que vous pouvez le mettre dans un fichier, ou utiliser le programme de sortie graphique de vnstat si vous l'avez. Le programme de sortie graphique est vnstati -i 'filename'
l'éditera dans un fichier png. Si vous voulez d'autres commandes vnstat --longhel
p a plus de commandes.
(Exemple d'écran montrant comment mettre des choses dans gnome-schedule).
Savez-vous déjà comment obtenir un "instantané" de la bande passante en utilisant vnstat, ou avez-vous besoin d'une aide supplémentaire sur ces commandes ? Je peux essayer de travailler davantage avec le programme.