Надеюсь, это немного поможет.
Поэтому я собираюсь дать вам программу, которую я написал, потому что у меня были проблемы с работой cron. К сожалению, я не знаю сценариев оболочки, так что это на python, но это сработало для меня, и это довольно просто, но приятно. Извините, я не прокомментировал свой код, но я действительно не хотел возвращаться к нему. Я знаю, что некоторые части не могут быть лучшими, но это работает.
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()
Краткое руководство
Откройте в режиме ожидания, скопируйте> вставить.
Сохранить как filename.py
.
Откройте Терминал.
Запустите его с Python 3 (python3 filename.py`).
Введите время, которое вы хотите запланировать для запуска vnstat.
Введите минуты, которые вы хотите этого часа.
Укажите количество часов, которое вы хотите отслеживать.
Укажите количество минут, которое вы хотите отслеживать.
Введите устройство, которое вы отслеживаете (я не прошел и проверку ошибок, поэтому, если вы введете что-то вроде monkeybutt, оно будет пытаться запускаться vnstat -i monkeybutt
каждые 15 секунд, просто Ctrl+ Cout).
Программа будет запускаться каждые 15 секунд, чтобы увидеть, совпадает ли время, и не будет выдавать никаких сообщений. Он предназначен для запуска в фоновом режиме. Как только он запустится, он будет снимать каждые 15 секунд сети на выбранном вами устройстве. Используя команду vnstat, а также счетчик, показывающий, сколько секунд у вас осталось на мониторинг.
После завершения сканирования он спросит, хотите ли вы выйти, и даст вам возможность, если вы хотите показать отчет, в противном случае вы можете просто выйти. В любом случае, все это хранится в базе данных vnstats.
Старая часть поста (может быть полезна для некоторых людей)
Вы можете получить gnome-schedule, затем добавить в свою команду, например, vnstat -h, и установить его повторяющимся во время попыток мониторинга. Может быть, слишком просто, но, надеюсь, кто-то еще может расширяться.
Дополнительно (Правка): я не очень часто использовал vnstat, поэтому я надеялся, что кто-то сможет расширить эту часть, но с помощью gnome-schedule вы можете запланировать выполнение команды в определенные части дня. Поэтому использование vntstat -tr -l (переключатель трафика, мониторинг трафика в реальном времени) покажет трафик во время работы (который вы можете запланировать в gnome-schedule, но вам, возможно, придется вручную Ctrl+ C] выйти.)
В противном случае я уверен, что вы могли бы передать это в файл или использовать программу графического вывода для vnstat, если у вас есть это. Программа графического вывода vnstati -i 'filename'
выведет ее в файл png. Если вам нужны дополнительные команды, vnstat --longhel
p имеет больше команд.
(Пример экрана, как поместить вещи в гном-расписание.)
Знаете ли вы, как получить «снимок» полосы пропускания с помощью vnstat, или вам нужна дополнительная помощь по этим командам? Я могу попытаться работать с программой больше.