50 lines
1.4 KiB
Python
Executable File
50 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import time
|
|
import configparser
|
|
import os
|
|
from lib.statscollector import StatsCollector
|
|
|
|
def get_config():
|
|
config = configparser.ConfigParser()
|
|
config_home = os.environ.get("XDG_CONFIG_HOME", os.path.expanduser("~/.config"))
|
|
config_path = os.path.join(config_home, "stats-collector", "config.ini")
|
|
|
|
if not os.path.exists(config_path):
|
|
os.makedirs(os.path.dirname(config_path), exist_ok=True)
|
|
config['DEFAULT'] = {
|
|
'port': '5747',
|
|
'interval': '60'
|
|
}
|
|
config['localhost'] = {
|
|
'host': 'localhost',
|
|
'displayname': 'Local System'
|
|
}
|
|
with open(config_path, 'w') as f:
|
|
config.write(f)
|
|
|
|
config.read(config_path)
|
|
return config
|
|
|
|
def main():
|
|
config = get_config()
|
|
collector = StatsCollector()
|
|
default_port = int(config['DEFAULT']['port'])
|
|
interval = int(config['DEFAULT']['interval'])
|
|
|
|
def collect_all():
|
|
for section in config.sections():
|
|
host = config[section]['host']
|
|
port = int(config[section].get('port', default_port))
|
|
collector.collect_from_host(host, port)
|
|
|
|
if interval > 0:
|
|
print(f"Starting continuous collection every {interval} seconds...")
|
|
while True:
|
|
collect_all()
|
|
time.sleep(interval)
|
|
else:
|
|
collect_all()
|
|
|
|
if __name__ == '__main__':
|
|
main()
|