PATH:
usr
/
local
/
lib
/
python3.9
/
site-packages
/
agent360
/
plugins
#!/usr/bin/env python # -*- coding: utf-8 -*- import re from subprocess import Popen, PIPE, CalledProcessError import sys import plugins def _get_match_groups(ping_output, regex): match = regex.search(ping_output) if not match: return False else: return match.groups() def system_command(Command, newlines=True): Output = "" Error = "" try: proc = Popen(Command.split(), stdout=PIPE) Output = proc.communicate()[0] except Exception: pass if Output: if newlines is True: Stdout = Output.split("\\n") else: Stdout = Output else: Stdout = [] if Error: Stderr = Error.split("\n") else: Stderr = [] return (Stdout, Stderr) def collect_ping(hostname): if sys.platform.startswith('linux') or sys.platform.startswith('freebsd'): #if sys.platform == "linux" or sys.platform == "linux2": response = str(system_command("ping -W 5 -c 1 " + hostname, False)[0]) try: matcher = re.compile(r'(\d+.\d+)/(\d+.\d+)/(\d+.\d+)/(\d+.\d+)') minping, avgping, maxping, jitter = _get_match_groups(response, matcher) response = avgping except Exception: #response = 9999 response = -1 elif sys.platform == "darwin": response = str(system_command("ping -c 1 " + hostname, False)[0]) # matcher = re.compile(r'min/avg/max/stddev = (\d+)/(\d+)/(\d+)/(\d+) ms') # min, avg, max, stddev = _get_match_groups(response, matcher) matcher = re.compile(r'(\d+.\d+)/(\d+.\d+)/(\d+.\d+)/(\d+.\d+)') matched = _get_match_groups(response, matcher) if matched is False: #response = 0 response = -1 else: minping, avgping, maxping, jitter = matched response = avgping elif sys.platform == "win32": #response = 0 response = -1 try: ping = Popen(["ping", "-n", "1 ", hostname], stdout=PIPE, stderr=PIPE) out, error = ping.communicate() if out: try: response = int(re.findall(r"Average = (\d+)", out)[0]) except Exception: pass else: #response = 0 response = -1 except CalledProcessError: pass if response == -1: try: rxresponse = re.findall(br" + .+ = [0-9]{1,9}ms, .+ = [0-9]{1,9}ms, .+ = (\d+){1,9}ms", out) response = rxresponse[0].decode() except Exception: pass else: #response = float(system_command("ping -W -c 1 " + hostname)) response = -1 return {'avgping': response, 'host': hostname} class Plugin(plugins.BasePlugin): __name__ = 'ping' def run(self, config): data = {} my_hosts = config.get('ping', 'hosts').split(',') data['ping'] = [] for host in my_hosts: data['ping'].append(collect_ping(host)) return data['ping'] if __name__ == '__main__': Plugin().execute()
[-] wp-toolkit.py
[open]
[+]
..
[-] plugins.py
[open]
[-] yum-updates.py
[open]
[-] proftpd.py
[open]
[-] sleeper.py
[open]
[-] network.py
[open]
[+]
__pycache__
[-] bird.py
[open]
[-] diskusage.py
[open]
[-] exim.py
[open]
[-] cpanel.py
[open]
[-] loggedin.py
[open]
[-] memory.py
[open]
[-] megacli.py
[open]
[-] phpfpm.py
[open]
[-] rabbitmq.py
[open]
[-] elasticsearch.py
[open]
[-] mysql.py
[open]
[-] iostat.py
[open]
[-] plesk-cgroups.py
[open]
[-] fail2ban.py
[open]
[-] loadavg.py
[open]
[-] dirsize.py
[open]
[-] openvpn.py
[open]
[-] apt-updates.py
[open]
[-] postfix.py
[open]
[-] diskstatus.py
[open]
[-] tcpports.py
[open]
[-] haproxy.py
[open]
[-] ping.py
[open]
[-] unbound.py
[open]
[-] dovecot.py
[open]
[-] memcached.py
[open]
[-] bitninja.py
[open]
[-] powerdns.py
[open]
[-] mailq.py
[open]
[-] gpu.py
[open]
[-] system.py
[open]
[-] cloudlinux.py
[open]
[-] cpu_freq.py
[open]
[-] janus.py
[open]
[-] nginx.py
[open]
[-] bind.py
[open]
[-] cpu.py
[open]
[-] litespeed.py
[open]
[-] swap.py
[open]
[-] temp.py
[open]
[-] kamailio.py
[open]
[-] httpd.py
[open]
[-] diskstatus-nvme.py
[open]
[-] process.py
[open]
[-] mongodb.py
[open]
[-] __init__.py
[open]
[-] minecraft.py
[open]
[-] docker.py
[open]
[-] vms.py
[open]
[-] asterisk.py
[open]
[-] redis_stat.py
[open]
[-] mdstat.py
[open]
[-] cloudlinux-dbgov.py
[open]
[-] diskinodes.py
[open]