-
Notifications
You must be signed in to change notification settings - Fork 113
Expand file tree
/
Copy pathmonitor.py
More file actions
99 lines (83 loc) · 3.96 KB
/
monitor.py
File metadata and controls
99 lines (83 loc) · 3.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import config
from prettytable import PrettyTable
from psutil import net_io_counters, cpu_percent
import display
from time import sleep
def get_size(only_bytes):
for unit in ['', 'K', 'M', 'G', 'T', 'P']:
if only_bytes < 1024:
return f"{only_bytes:.2f}{unit}B"
only_bytes /= 1024
def get_network_io():
io = net_io_counters()
return io.bytes_sent + config.get_parameter('total_upload_before_reboot') \
, io.bytes_recv + config.get_parameter('total_download_before_reboot')
def total_upload_color(total_upload, total_download):
value = max(0, (config.get_parameter('coefficient') - total_upload / total_download)) / \
config.get_parameter('coefficient') * 100
if 66 <= value <= 100:
return display.red + get_size(total_upload) + display.cornsilk
elif 33 <= value < 66:
return display.yellow + get_size(total_upload) + display.cornsilk
else:
return display.green + get_size(total_upload) + display.cornsilk
def total_download_color(total_download):
if 0 <= total_download < 700000000000:
return display.green + get_size(total_download) + display.cornsilk
elif 700000000000 <= total_download < 1500000000000:
return display.yellow + get_size(total_download) + display.cornsilk
else:
return display.red + get_size(total_download) + display.cornsilk
def upload_speed_color(upload_speed):
if 0 <= upload_speed < 8000000:
return display.green + get_size(upload_speed) + display.cornsilk
elif 8000000 <= upload_speed < 15000000:
return display.yellow + get_size(upload_speed) + display.cornsilk
else:
return display.red + get_size(upload_speed) + display.cornsilk
def download_speed_color(download_speed):
if 0 <= download_speed < 2000000:
return display.green + get_size(download_speed) + display.cornsilk
elif 2000000 <= download_speed < 5000000:
return display.yellow + get_size(download_speed) + display.cornsilk
else:
return display.red + get_size(download_speed) + display.cornsilk
def cpu_percent_color(cpu_usage_percent):
if 0 <= cpu_usage_percent < 34:
return display.green + str(cpu_usage_percent) + display.cornsilk
elif 34 <= cpu_usage_percent < 66:
return display.yellow + str(cpu_usage_percent) + display.cornsilk
else:
return display.red + str(cpu_usage_percent) + display.cornsilk
def monitor():
display.banner()
old_bytes_sent, old_bytes_recv = get_network_io()
namizun_monitor = PrettyTable()
namizun_monitor.field_names = [f"{display.cyan}Σ Upload{display.cornsilk}",
f"{display.cyan}Σ Download{display.cornsilk}",
f"{display.cyan}⇧ Speed{display.cornsilk}",
f"{display.cyan}⇩ Speed{display.cornsilk}",
f"{display.cyan}% CPU{display.cornsilk}"]
namizun_monitor.add_row([0, 0, 0, 0, 0])
print(f"{display.gold}--------------{display.magenta}MONITORING{display.gold}-------------\n\n{display.cornsilk}"
f"{namizun_monitor}")
sleep(1)
while True:
sleep(1)
if config.get_parameter('in_submenu') is None:
display.clear()
return exit()
if config.get_parameter('in_submenu') is False:
display.line_jumper(-14)
display.line_remover(5)
new_bytes_sent, new_bytes_recv = get_network_io()
namizun_monitor.add_row([
total_upload_color(new_bytes_sent, new_bytes_recv),
total_download_color(new_bytes_recv),
upload_speed_color(new_bytes_sent - old_bytes_sent),
download_speed_color(new_bytes_recv - old_bytes_recv),
cpu_percent_color(cpu_percent())])
namizun_monitor.del_row(0)
print(namizun_monitor)
display.line_jumper(+12)
old_bytes_sent, old_bytes_recv = new_bytes_sent, new_bytes_recv