You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.2 KiB
91 lines
2.2 KiB
import argparse
|
|
import os
|
|
import time
|
|
import traceback
|
|
|
|
from fetchers import *
|
|
from colors import getColorsDict
|
|
|
|
clear = lambda: os.system('clear')
|
|
|
|
results = {
|
|
"row_separator": getRowSeparator(),
|
|
"ha_sensors": ""
|
|
}
|
|
logging = False
|
|
results.update(getColorsDict())
|
|
|
|
def printColors():
|
|
res = ""
|
|
for k,v in getColorsDict().items():
|
|
res += f"{v}{k}"
|
|
print(res)
|
|
|
|
def createDaemon(func, key, sleep = 60):
|
|
from threading import Thread
|
|
results[key] = ""
|
|
def resTo():
|
|
while True:
|
|
try:
|
|
results[key] = func()
|
|
if logging:
|
|
print(f'[{time.time()}] Save result to {key}')
|
|
except:
|
|
traceback.print_exc()
|
|
finally:
|
|
time.sleep(sleep)
|
|
|
|
t = Thread(target=resTo, name=f"daemon-{key}")
|
|
t.daemon = True
|
|
t.start()
|
|
|
|
class Service:
|
|
def __init__(self, args):
|
|
self.args = args
|
|
self.startFetcher()
|
|
self.looper()
|
|
|
|
def startFetcher(self):
|
|
createDaemon(getAvg, "sys_avg", 1)
|
|
createDaemon(getDateTime, "date_time", 1)
|
|
createDaemon(getCpuPercent, "cpu_percent", 1)
|
|
createDaemon(getMemPercent, "mem_percent", 1)
|
|
createDaemon(getArp, "arp_result", 60)
|
|
try:
|
|
from haSensors import getHaSensors
|
|
createDaemon(getHaSensors, "ha_sensors", 60)
|
|
except:
|
|
pass
|
|
|
|
def printer():
|
|
self.printer()
|
|
createDaemon(printer, "printer", 1)
|
|
|
|
def looper(self):
|
|
try:
|
|
while True:
|
|
time.sleep(1)
|
|
except:
|
|
exit(0)
|
|
|
|
def printer(self):
|
|
out = '''
|
|
{YELLOW}{date_time:^19}{END} | {CYAN}{sys_avg:^14}{END} | CPU:{cpu_percent:^5} | MEM:{mem_percent:^5}
|
|
{row_separator}
|
|
{ha_sensors}
|
|
{row_separator}
|
|
{arp_result}
|
|
'''.format(**results)[1:-1]
|
|
format_cr = ""
|
|
for row in out.split("\n")[:self.args.rows]:
|
|
format_cr += f"{row}\n"#[:self.args.cols]
|
|
clear()
|
|
print(format_cr, end="")
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--cols", default=60)
|
|
parser.add_argument("--rows", default=40)
|
|
args = parser.parse_args()
|
|
Service(args)
|
|
#printColors()
|