Hackfut Security File Manager
Current Path:
/usr/local/lib/python3.6/site-packages/agent360/plugins
usr
/
local
/
lib
/
python3.6
/
site-packages
/
agent360
/
plugins
/
📁
..
📄
__init__.py
(0 B)
📁
__pycache__
📄
apt-updates.py
(1.23 KB)
📄
asterisk.py
(1012 B)
📄
bind.py
(732 B)
📄
bird.py
(841 B)
📄
bitninja.py
(1.27 KB)
📄
cloudlinux-dbgov.py
(1.04 KB)
📄
cloudlinux.py
(1020 B)
📄
cpanel.py
(1.41 KB)
📄
cpu.py
(1.97 KB)
📄
cpu_freq.py
(583 B)
📄
dirsize.py
(617 B)
📄
diskinodes.py
(652 B)
📄
diskstatus-nvme.py
(1.58 KB)
📄
diskstatus.py
(1.96 KB)
📄
diskusage.py
(4.04 KB)
📄
docker.py
(3.36 KB)
📄
dovecot.py
(1.27 KB)
📄
elasticsearch.py
(4.24 KB)
📄
exim.py
(484 B)
📄
fail2ban.py
(831 B)
📄
gpu.py
(959 B)
📄
haproxy.py
(4.17 KB)
📄
httpd.py
(2.73 KB)
📄
iostat.py
(5.1 KB)
📄
janus.py
(705 B)
📄
kamailio.py
(556 B)
📄
litespeed.py
(3.04 KB)
📄
loadavg.py
(332 B)
📄
loggedin.py
(400 B)
📄
mailq.py
(528 B)
📄
mdstat.py
(1.36 KB)
📄
megacli.py
(2.72 KB)
📄
memcached.py
(3.09 KB)
📄
memory.py
(932 B)
📄
minecraft.py
(2.35 KB)
📄
mongodb.py
(5.63 KB)
📄
mysql.py
(5.13 KB)
📄
network.py
(2.72 KB)
📄
nginx.py
(3.2 KB)
📄
openvpn.py
(2.17 KB)
📄
phpfpm.py
(2.72 KB)
📄
ping.py
(3.09 KB)
📄
plesk-cgroups.py
(6.18 KB)
📄
plugins.py
(2.48 KB)
📄
postfix.py
(1.73 KB)
📄
powerdns.py
(4.56 KB)
📄
process.py
(4.26 KB)
📄
proftpd.py
(1.1 KB)
📄
rabbitmq.py
(3.49 KB)
📄
redis_stat.py
(5.48 KB)
📄
sleeper.py
(244 B)
📄
swap.py
(364 B)
📄
system.py
(5.67 KB)
📄
tcpports.py
(1.08 KB)
📄
temp.py
(1.45 KB)
📄
unbound.py
(3.24 KB)
📄
vms.py
(6.2 KB)
📄
wp-toolkit.py
(1.8 KB)
📄
yum-updates.py
(810 B)
Editing: iostat.py
#!/usr/bin/env python # -*- coding: utf-8 -*- # import os import signal import subprocess import sys import psutil import plugins import time def diskstats_parse(dev=None): file_path = '/proc/diskstats' result = {} if not os.path.isfile("/proc/diskstats"): return False # ref: http://lxr.osuosl.org/source/Documentation/iostats.txt columns_disk = ['m', 'mm', 'dev', 'reads', 'rd_mrg', 'rd_sectors', 'ms_reading', 'writes', 'wr_mrg', 'wr_sectors', 'ms_writing', 'cur_ios', 'ms_doing_io', 'ms_weighted'] # For kernel 4.18+ columns_disk_418 = ['m', 'mm', 'dev', 'reads', 'rd_mrg', 'rd_sectors', 'ms_reading', 'writes', 'wr_mrg', 'wr_sectors', 'ms_writing', 'cur_ios', 'ms_doing_io', 'ms_weighted', 'discards', 'discards_merged', 'discarded_sectors', 'discarded_time'] # for kernel 5.5+ columns_disk_55 = ['m', 'mm', 'dev', 'reads', 'rd_mrg', 'rd_sectors', 'ms_reading', 'writes', 'wr_mrg', 'wr_sectors', 'ms_writing', 'cur_ios', 'ms_doing_io', 'ms_weighted', 'discards', 'discards_merged', 'discarded_sectors', 'discarded_time', 'flush', 'flush_time'] columns_partition = ['m', 'mm', 'dev', 'reads', 'rd_sectors', 'writes', 'wr_sectors'] lines = open(file_path, 'r').readlines() for line in lines: if line == '': continue split = line.split() if len(split) == len(columns_disk_55): columns = columns_disk_55 elif len(split) == len(columns_disk_418): columns = columns_disk_418 elif len(split) == len(columns_disk): columns = columns_disk elif len(split) == len(columns_partition): columns = columns_partition else: # No match continue data = dict(zip(columns, split)) if data['dev'][:3] == 'nvm' and data['dev'][-2:-1] == 'n': pass elif data['dev'][-1:].isdigit() is True: continue if "loop" in data['dev'] or "ram" in data['dev']: continue if dev is not None and dev != data['dev']: continue for key in data: if key != 'dev': data[key] = int(data[key]) result[data['dev']] = data return result class Plugin(plugins.BasePlugin): __name__ = 'iostat' def run(self, *unused): delta_keys = ( 'reads', 'writes', 'wr_sectors', 'rd_sectors', 'ms_reading', 'rd_mrg', 'wr_mrg', 'ms_weighted', 'ms_doing_io', 'ms_writing', 'discarded_sectors', 'discarded_time', 'flush', 'flush_time', 'discards' ) next_cache = {} next_cache['ts'] = time.time() prev_cache = self.get_agent_cache() # Get absolute values from previous check disks = diskstats_parse() if not disks or disks is False: results = {} try: diskdata = psutil.disk_io_counters(perdisk=True) for device, values in diskdata.items(): device_stats = {} for key_value in values._fields: device_stats[key_value] = getattr(values, key_value) results[device] = device_stats except Exception as e: results = e.message else: results = {} for device, values in disks.items(): device_stats = {} next_cache[device] = {} next_cache[device]['ts'] = time.time() try: prev_cache[device] except: prev_cache[device] = {} for key_value, value in values.items(): if key_value in delta_keys: try: device_stats[key_value] = self.absolute_to_per_second(key_value, value, prev_cache[device]) except: pass next_cache[device][key_value] = value else: device_stats[key_value] = value try: device_stats['avgrq-sz'] = (device_stats['wr_sectors']+device_stats['rd_sectors']) / (device_stats['reads']+device_stats['writes']) except: device_stats['avgrq-sz'] = 0 try: device_stats['tps'] = device_stats['reads']+device_stats['writes'] except: device_stats['tps'] = 0 try: device_stats['usage'] = (100 * device_stats['ms_doing_io']) / (1000 * (next_cache['ts'] - prev_cache['ts'])) except: device_stats['usage'] = 0 results[device] = device_stats self.set_agent_cache(next_cache) return results if __name__ == '__main__': Plugin().execute()
Upload File
Create Folder