Esperemos que esto ayude un poco.
Así que voy a darle un programa que escribí, porque estaba teniendo problemas con el funcionamiento de cron. Desafortunadamente, no conozco los scripts de shell, así que esto está en Python, pero funcionó para mí, y es bastante simple, pero agradable. Lo siento, no comenté mi código, pero realmente no quería volver a leerlo. Sé que algunas partes pueden no ser las mejores, pero funciona.
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()
Guía rápida
Abra Idle, copie> pegue.
Guardar como filename.py
.
Terminal abierta
Ejecútelo con Python 3 (python3 filename.py`).
Ingrese la hora que desea programar para que se ejecute vnstat.
Pon el minuto que quieras de esa hora.
Ponga la cantidad de horas que desea monitorear.
Ponga la cantidad de minutos que desea monitorear.
Ingrese el dispositivo que está monitoreando (no lo revisé y la verificación de errores, por lo que si ingresa algo como monkeybutt, intentará ejecutarse vnstat -i monkeybutt
, cada 15 segundos, solo Ctrl+ Cfuera).
El programa se ejecutará cada 15 segundos para ver si el tiempo coincide, no dará ningún mensaje. Está destinado a ejecutarse en segundo plano. Una vez que comience, tomará una foto cada 15 segundos de la red, en el dispositivo que elija. Usando el comando vnstat, más un contador que indica cuántos segundos le quedan de monitoreo.
Después de completar los escaneos, le preguntará si desea salir y le dará una opción si desea mostrar un informe; de lo contrario, puede salir. Todo el material se almacena en la base de datos vnstats de todos modos.
Parte anterior de la publicación (puede ser útil para algunas personas)
Puede obtener gnome-schedule, luego poner su comando, por ejemplo, vnstat -h, y configurarlo para que vuelva a ocurrir durante los momentos que está tratando de monitorear. Quizás demasiado simple, pero espero que alguien más pueda expandirse aún más.
Adicional (Editar): no he usado mucho vnstat, por eso esperaba que alguien pudiera expandirse en esa parte, pero con el programa gnome, puede programar un comando para que se ejecute durante partes específicas del día. Por lo tanto, usar vntstat -tr -l (interruptor de tráfico, monitorear el tráfico en vivo), mostraría el tráfico mientras se ejecuta (que puede programar en gnome-schedule, pero puede que tenga que hacer Ctrl+ + manualmente C).
De lo contrario, estoy seguro de que podría canalizar esto en un archivo, o usar el programa de salida gráfica para vnstat si lo tiene. El programa de salida gráfica se vnstati -i 'filename'
enviará a un archivo png. Si desea más comandos, vnstat --longhel
p tiene más comandos.
(Pantalla de muestra de cómo poner las cosas en gnome-schedule).
¿Sabes cómo obtener una 'instantánea' del ancho de banda usando vnstat o necesitas más ayuda con esos comandos? Puedo intentar trabajar más con el programa.