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.
 

93 lines
2.4 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, *args):
from threading import Thread
results[key] = ""
def resTo():
while True:
try:
results[key] = func(*args)
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, self.args.ip_pool)
#createDaemon(pingHostViaNMap, "nmap_pinger", 60, self.args.ip_pool)
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)
parser.add_argument("--ip-pool", default="192.168.3.0/24")
args = parser.parse_args()
Service(args)
#printColors()