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: plesk-cgroups.py
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import glob import pathlib import pwd import re import time import plugins class Plugin(plugins.BasePlugin): __name__ = 'plesk-cgroups' def run(self, *unused): accounting = {} cache = self.get_agent_cache() uid_re = re.compile('\d+') # This silently depends on cgroup mounted virtual file systems # and SystemD user slices sysfs_prefix = '/sys/fs/cgroup/' sysfs_suffix = 'user.slice/user-*.slice' for user_slice in ( glob.glob(sysfs_prefix + sysfs_suffix) + # cgroup v2 glob.glob(sysfs_prefix + 'systemd/' + sysfs_suffix) # cgroup v1 ): accounting[user_slice] = {} if not user_slice in cache: cache[user_slice] = {} accounting[user_slice]['uid'] = uid = \ int(uid_re.search(user_slice).group()) # Resolve uid to username try: accounting[user_slice]['username'] = pwd.getpwuid(uid).pw_name except KeyError: # There's no guarantee that the uid has a name pass # This silently depends on the corresponding CGroup controllers # being individually enabled # Memory accounting try: # cgroup v2 with pathlib.Path(user_slice, 'memory.current').open() as f: accounting[user_slice]['memory.current'] = \ int(f.read().strip()) except FileNotFoundError: try: # cgroup v1 with pathlib.Path( sysfs_prefix, 'memory', 'user.slice', 'user-{}.slice'.format(uid), 'memory.usage_in_bytes' ).open() as f: accounting[user_slice]['memory.usage_in_bytes'] = \ int(f.read().strip()) except FileNotFoundError: pass # IO accounting try: # cgroup v2 with pathlib.Path(user_slice, 'io.stat').open() as f: accounting[user_slice]['io.stat'] = a = {} if not 'io.stat' in cache[user_slice]: cache[user_slice]['io.stat'] = c = {} for line in f.readlines(): devnum, metrics = line.split(maxsplit=1) if not devnum in a: a[devnum] = {} a[devnum]['ts'] = time.time() if not devnum in c: c[devnum] = {} for kv in metrics.split(): k, v = kv.split('=') a[devnum][k] = self.absolute_to_per_second( k, int(v), c[devnum] ) c[devnum][k] = int(v) except FileNotFoundError: try: # cgroup v1 with pathlib.Path( sysfs_prefix, 'blkio', 'user.slice', 'user-{}.slice'.format(uid), 'blkio.throttle.io_service_bytes' ).open() as f: accounting[user_slice]\ ['blkio.throttle.io_service_bytes'] = a = {} if not 'blkio.throttle.io_service_bytes' \ in cache[user_slice]: cache[user_slice]\ ['blkio.throttle.io_service_bytes'] = c = {} for line in f.readlines(): try: devnum, k, v = line.split() except ValueError: # The last line is "Total", # it has only 2 values and is ignored pass if not devnum in a: a[devnum] = {} a[devnum]['ts'] = time.time() if not devnum in c: c[devnum] = {} a[devnum][k] = self.absolute_to_per_second( k, int(v), c[devnum] ) c[devnum][k] = int(v) except FileNotFoundError: pass # CPU accounting try: # cgroup v2 with pathlib.Path(user_slice, 'cpu.stat').open() as f: accounting[user_slice]['cpu.stat'] = a = {} if not 'cpu.stat' in cache[user_slice]: cache[user_slice]['cpu.stat'] = c = {} a['ts'] = time.time() for line in f.readlines(): k, v = line.split() a[k] = self.absolute_to_per_second(k, int(v), c) c[k] = int(v) except FileNotFoundError: try: # cgroup v1 with pathlib.Path( sysfs_prefix, 'cpu', 'user.slice', 'user-{}.slice'.format(uid), 'cpuacct.stat' ).open() as f: accounting[user_slice]['cpuacct.stat'] = a = {} if not 'cpuacct.stat' in cache[user_slice]: cache[user_slice]['cpuacct.stat'] = c = {} a['ts'] = time.time() for line in f.readlines(): k, v = line.split() a[k] = self.absolute_to_per_second(k, int(v), c) c[k] = int(v) except FileNotFoundError: pass self.set_agent_cache(cache) return accounting if __name__ == '__main__': Plugin().execute()
Upload File
Create Folder