Skip to content

Commit 93f28c7

Browse files
committed
add Bandwidth-Monitor script
1 parent 40e8e8d commit 93f28c7

File tree

2 files changed

+83
-0
lines changed

2 files changed

+83
-0
lines changed

Bandwidth-Monitor/README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Network-Usage-Tracker
2+
A python script to keep a track of network usage and notify you if it exceeds a specified limit
3+
(only support for wifi right now)
4+
5+
### Requirements:
6+
7+
#####**This script needs Python 3+**
8+
9+
You may also need to install vnstat if you don't have it already installed
10+
```bash
11+
$ sudo apt-get install vnstat
12+
```
13+
14+
### Usage:
15+
16+
```bash
17+
$ python bandwidth_py3.py xxx MiB/GiB &
18+
```
19+
The '&' has been added to run the process in background. If you want to stop the process at any time use :
20+
21+
```bash
22+
$ ps -ef
23+
```
24+
to get the list of running processes and then get the pid of the process you want to kill and do :
25+
26+
```bash
27+
$ sudo kill pid
28+
```

Bandwidth-Monitor/bandwidth_py3.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#Contributed via : https://github.com/adarshkushwah/Network-Usage-Tracker
2+
3+
import os
4+
import sys
5+
import time
6+
import threading
7+
import subprocess
8+
import tkinter
9+
import tkinter.messagebox
10+
11+
12+
def monitor(limit, unit):
13+
check = "vnstat"
14+
proc = subprocess.Popen(check, shell=True, stdout=subprocess.PIPE)
15+
output = proc.communicate()
16+
output = str(output)
17+
#print output
18+
l = []
19+
for t in output.split():
20+
try:
21+
if t == "MiB" or t == "GiB":
22+
l.append(t)
23+
else:
24+
l.append(float(t))
25+
except ValueError:
26+
pass
27+
28+
if unit == l[5] and limit < l[4]:
29+
print("\nnetwork usage limit exceeded!\n")
30+
top = tkinter.Tk()
31+
32+
def hello():
33+
tkinter.messagebox.showinfo("Warning!", "Network usage limit exceeded!!!!")
34+
B1 = tkinter.Button(top, text="Warning", command=hello)
35+
B1.pack()
36+
top.mainloop()
37+
arg = [limit, unit]
38+
threading.Timer(60.0, monitor, arg).start()
39+
40+
41+
def main():
42+
if len(sys.argv) > 3 or len(sys.argv) < 3:
43+
print('command usage: python3 bandwidth_py3.py <data usage in MiB or GiB>')
44+
print('example: python3 bandwidth_py3.py 500 MiB')
45+
print('or python3 bandwidth_py3.py 2 GiB')
46+
exit(1)
47+
else:
48+
limit = float(sys.argv[1])
49+
unit = str(sys.argv[2])
50+
#callMonitor(limit, unit)
51+
monitor(limit, unit)
52+
53+
54+
if __name__ == "__main__":
55+
main()

0 commit comments

Comments
 (0)