잘하면 이것은 약간 도움이됩니다.
그래서 나는 cron 작업에 문제가 있었기 때문에 내가 작성한 프로그램을 제공 할 것입니다. 불행히도 쉘 스크립팅을 알지 못하므로 파이썬으로되어 있지만 저에게 효과적이며 꽤 간단하지만 훌륭합니다. 죄송하지만 코드에 댓글을 달지 않았지만 실제로는 다시 돌아가고 싶지 않았습니다. 일부 부품이 최고가 아닐 수도 있지만 작동합니다.
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+ 실행하려고 시도 C합니다).
프로그램은 시간이 일치하는지 확인하기 위해 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를 사용하여 대역폭의 '스냅 샷'을 얻는 방법을 알고 있거나 해당 명령에 대한 추가 도움이 필요하십니까? 프로그램으로 더 많은 작업을 시도 할 수 있습니다.