Espero que isso ajude um pouco.
Então, eu vou lhe dar um programa que escrevi, porque estava tendo problemas com o cron funcionando. Infelizmente, eu não conheço scripts de shell, então isso está em python, mas funcionou para mim e é bem simples, mas agradável. Desculpe por não comentar o meu código, mas realmente não queria voltar a usá-lo. Eu sei que algumas partes podem não ser as melhores, mas 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()
Guia rápido
Abra Ocioso, copie> cole.
Salvar como filename.py
.
Terminal aberto.
Execute-o com o Python 3 (python3 filename.py`).
Coloque a hora em que você deseja agendar a execução do vnstat.
Ponha no minuto que você quer daquela hora.
Coloque a quantidade de horas que deseja monitorar.
Coloque a quantidade de minutos que deseja monitorar.
Digite o dispositivo que você está monitorando (eu não passei por uma verificação de erro; portanto, se você digitar algo como monkeybutt, ele tentará executar vnstat -i monkeybutt
, a cada 15 segundos, apenas Ctrl+ Csair).
O programa será executado a cada 15 segundos para verificar se o horário corresponde e não enviará nenhuma mensagem. É para ser executado em segundo plano. Uma vez iniciado, a tomada é capturada a cada 15 segundos da rede, no dispositivo que você escolheu. Usando o comando vnstat, além de um contador dizendo quantos segundos você deixou de monitorar.
Depois de concluir as varreduras, ele perguntará se você deseja sair e oferece uma opção para exibir um relatório, caso contrário, você pode simplesmente sair. Todo o material é armazenado no banco de dados vnstats de qualquer maneira.
Parte antiga da postagem (pode ser útil para algumas pessoas)
Você pode obter o gnome-schedule, depois colocar seu comando, por exemplo, vnstat -h, e configurá-lo novamente nos momentos que você está tentando monitorar. Talvez simples demais, mas espero que outra pessoa possa se expandir ainda mais.
Adicional (Editar): Eu não usei muito o vnstat, e é por isso que eu esperava que alguém pudesse expandir essa parte, mas com o gnome-schedule, você pode agendar um comando para executar durante partes específicas do dia. Portanto, o uso de vntstat -tr -l (comutador de tráfego, monitora o tráfego ao vivo) mostraria o tráfego durante a execução (que você pode agendar no gnome-schedule, mas pode ser necessário Ctrl+ C] manualmente ).
Caso contrário, tenho certeza de que você pode canalizar isso para um arquivo ou usar o programa de saída gráfica para vnstat, se tiver. Programa de saída gráfica é vnstati -i 'filename'
irá enviá-lo para o arquivo png. Se você quiser mais comandos, vnstat --longhel
p tem mais comandos.
(Exemplo de tela de como colocar as coisas na programação do gnome.)
Você já sabe como obter um 'instantâneo' da largura de banda usando vnstat ou precisa de mais ajuda sobre esses comandos? Eu posso tentar trabalhar mais com o programa.