From 16423eea5a5049cc24b200240d60f569d6c49a09 Mon Sep 17 00:00:00 2001 From: beudbeud Date: Thu, 1 Nov 2012 10:39:09 +0100 Subject: [PATCH] add public ip , enable and disable process, check port --- action_map.yml | 11 ++++++++- yunohost_monitor.py | 58 +++++++++++++++++++++++++++++++++++---------- 2 files changed, 56 insertions(+), 13 deletions(-) diff --git a/action_map.yml b/action_map.yml index 4334f7ab..237204ae 100644 --- a/action_map.yml +++ b/action_map.yml @@ -379,28 +379,37 @@ monitor: action: store_true -i: full: --ifconfig - help: Ifconfig + help: Show Ip and MAC Adress action: store_true -u: full: --uptime help: Show Uptime action: store_true + -p: + full: --public + help: Show IP public + action: store_true process: action_help: Check Process arguments: -e: full: --enable help: Enable process + metavar: PROCESS -d: full: --disable help: Disable process + metavar: PROCESS --start: help: Start process + metavar: PROCESS --stop: help: Stop process + metavar: PROCESS -c: full: --check help: Check process + metavar: PORT -i: full: --info help: Process info diff --git a/yunohost_monitor.py b/yunohost_monitor.py index 5d01fc3d..8b4696ab 100644 --- a/yunohost_monitor.py +++ b/yunohost_monitor.py @@ -3,6 +3,7 @@ import os import sys import subprocess +from urllib import urlopen try: import psutil except ImportError: @@ -33,7 +34,7 @@ def check_disk(): templ = "%s,%s/%s,%s,%s" for part in psutil.disk_partitions(all=False): usage = psutil.disk_usage(part.mountpoint) - return { _("Partition") : (part.mountpoint, bytes2human(usage.used), bytes2human(usage.total), bytes2human(usage.free), int(usage.percent)) } + return { _("Partition") : (part.mountpoint, bytes2human(usage.used), bytes2human(usage.total), bytes2human(usage.free), int(usage.percent)) } def check_cpu(): return { _("CPU") : psutil.cpu_percent(interval=3) } @@ -59,6 +60,13 @@ def uptime(): uptime = (str(datetime.now() - datetime.fromtimestamp(psutil.BOOT_TIME)).split('.')[0]) return { _("Uptime") : uptime } +def public(): + try: + ip = str(urlopen('http://ip.yunohost.org').read()) + except: + raise YunoHostError(1, "No connection" ) + return { _("Public IP"): ip } + def processcount(): processcount = {'total': 0, 'running': 0, 'sleeping': 0} process_all = [proc for proc in psutil.process_iter()] @@ -90,27 +98,46 @@ def processcount(): return { _("Total") : str(processcount['total']), _("Running") : str(processcount['running']), _("Sleeping") : str(processcount['sleeping']) } def process_enable(args): - print 'process_enable' + output = subprocess.Popen(['update-rc.d', args, 'defaults'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) + if output.wait() == 0: + resultat = process_start(args) + return resultat + else: + raise YunoHostError(1, _('Enable ' + agrs + ' failure')) def process_disable(args): - print 'process disable' + output = subprocess.Popen(['update-rc.d', args, 'remove'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) + if output.wait() == 0: + resultat = process_stop(args) + return resultat + else: + raise YunoHostError(1, _('Disable ' + agrs + ' failure')) def process_start(args): output = subprocess.Popen(['service', args, 'start'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) if output.wait() == 0: - return { _('Start') + " " + args : "OK" } + return { args.title() + " " + _('Start') : "OK" } else: - raise YunoHostError(1, _('Start failure')) + raise YunoHostError(1, _('Start ' + args + ' failure')) def process_stop(args): output = subprocess.Popen(['service', args, 'stop'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) if output.wait() == 0: - return { _('Stop') + " " + args : "OK" } + return { args.title() + " " + _('Stop') : "OK" } else: - raise YunoHostError(1, _('Start failure')) + raise YunoHostError(1, _('Stop ' + args + ' failure')) def process_check(args): - print 'process_check' + ip = public()['Public IP'] + output = os.system('/usr/lib/nagios/plugins/check_tcp -H localhost -p' + args + ' > /dev/null') + if output == 0: + output = os.system('/usr/lib/nagios/plugins/check_tcp -H ' + ip + ' -p' + args + ' > /dev/null') + if output == 0: + return { _("Port") + " " + args : _("is open") } + else: + raise YunoHostError(1, "Port " + args + " is closed in your box" ) + else: + raise YunoHostError(1, args + " is closed" ) def monitor_info(args): @@ -129,19 +156,26 @@ def monitor_info(args): elif args['uptime']: resultat = uptime() return resultat + elif args['public']: + resultat = public() + return resultat def monitor_process(args): if args['enable']: - process_enable(args['enable']) + resultat = process_enable(args['enable']) + return resultat elif args['disable']: - process_disable(args['disable']) + resultat = process_disable(args['disable']) + return resultat elif args['start']: resultat = process_start(args['start']) return resultat elif args['stop']: - process_stop(args['stop']) + resultat = process_stop(args['stop']) + return resultat elif args['check']: - process_check(args['check']) + resultat = process_check(args['check']) + return resultat elif args['info']: resultat = processcount() return resultat