/
opt
/
dedrads
/
/opt/dedrads
mkdir
upload
Name
Size
Mode
Actions
account_review/
-
0555
rm
check_software_mods/
-
0555
rm
cms_tools/
-
0555
rm
etc/
-
0555
rm
extras/
-
0555
rm
mailparse/
-
0555
rm
mysql/
-
0555
rm
nlp_scripts/
-
0555
rm
oldrads/
-
0555
rm
perl/
-
0555
rm
provision/
-
0555
rm
python/
-
0555
rm
suspended/
-
0555
rm
__pycache__/
-
0555
rm
account-review
799
0555
edit
dl
rm
allfw
6259
0555
edit
dl
rm
alp.py
16553
0555
edit
dl
rm
autossl_sync
6267
0555
edit
dl
rm
check_apache
9205
0555
edit
dl
rm
check_bandwidth
4546
0555
edit
dl
rm
check_boxtrapper
1684
0555
edit
dl
rm
check_cpu
12212
0555
edit
dl
rm
check_crons
1827
0555
edit
dl
rm
check_dcpumon
1973
0555
edit
dl
rm
check_dns
1827
0555
edit
dl
rm
check_domlogs
61
0555
edit
dl
rm
check_exim
3731
0555
edit
dl
rm
check_hacks
22604
0555
edit
dl
rm
check_imap
5249
0555
edit
dl
rm
check_io
6635
0555
edit
dl
rm
check_max_children
16341
0555
edit
dl
rm
check_mem
1660
0555
edit
dl
rm
check_misc
1510
0555
edit
dl
rm
check_pacct
5201
0555
edit
dl
rm
check_php
4344
0555
edit
dl
rm
check_pop3
2295
0555
edit
dl
rm
check_prov.py
4714
0555
edit
dl
rm
check_server
696
0555
edit
dl
rm
check_size
490
0555
edit
dl
rm
check_software
9849
0555
edit
dl
rm
check_spamd
2426
0555
edit
dl
rm
check_traffic
1933
0555
edit
dl
rm
check_user
1887
0555
edit
dl
rm
clean_exim.py
6390
0555
edit
dl
rm
clusterfix
5343
0555
edit
dl
rm
cmspass.py
3970
0555
edit
dl
rm
cms_check.py
9825
0555
edit
dl
rm
cms_counter.py
36734
0555
edit
dl
rm
cms_creds
713
0555
edit
dl
rm
cms_dumpdb
4485
0555
edit
dl
rm
cms_pw
1416
0555
edit
dl
rm
cpanel-api
7040
0555
edit
dl
rm
cpanel_postgres_manager.py
29004
0555
edit
dl
rm
cpmerge
4631
0555
edit
dl
rm
cpumon
2195
0555
edit
dl
rm
dcpumon.pl
1239
0555
edit
dl
rm
dedcheck
18127
0555
edit
dl
rm
dns-sync
14386
0555
edit
dl
rm
docroot.py
4425
0555
edit
dl
rm
du-tree
7450
0555
edit
dl
rm
envinfo.py
6633
0555
edit
dl
rm
exclude_rbl.py
5249
0555
edit
dl
rm
extract-vhost
2691
0555
edit
dl
rm
filescan
3566
0555
edit
dl
rm
find_warez
1460
0555
edit
dl
rm
first_setup.py
19120
0555
edit
dl
rm
fixwpcron.py
4822
0555
edit
dl
rm
fix_dns_cluster
353
0555
edit
dl
rm
goaccess
1217720
0555
edit
dl
rm
hostsfilemods
4467
0555
edit
dl
rm
imap_io
2323
0555
edit
dl
rm
innodb_converter.py
9343
0555
edit
dl
rm
killall911
530
0555
edit
dl
rm
killdns
941
0555
edit
dl
rm
lastcommcache.sh
1374
0555
edit
dl
rm
legal_lock_down.sh
7450
0555
edit
dl
rm
lil-cpanel
52002
0555
edit
dl
rm
listacct
4575
0555
edit
dl
rm
mailscan
4544
0555
edit
dl
rm
mail_sources.py
7407
0555
edit
dl
rm
megaclisas-status
38664
0555
edit
dl
rm
migrate2central.sh
14418
0555
edit
dl
rm
modify-account
40631
0555
edit
dl
rm
modsec_disable.py
11461
0555
edit
dl
rm
monarxctl
8912
0555
edit
dl
rm
msp.pl
27714
0555
edit
dl
rm
mysql_dstat
474
0555
edit
dl
rm
mysql_selector.py
73102
0555
edit
dl
rm
nlp
4582
0555
edit
dl
rm
procscrape
1863
0555
edit
dl
rm
quarantine
11083
0555
edit
dl
rm
radsfunctions.sh
863
0555
edit
dl
rm
recent-cp
16148
0555
edit
dl
rm
remote_dump
18347
0555
edit
dl
rm
reset_cpanel
3205
0555
edit
dl
rm
server-load
2192
0555
edit
dl
rm
show-conns
20105
0555
edit
dl
rm
show-conns-adv.py
54667
0555
edit
dl
rm
sparta.py
382498
0555
edit
dl
rm
sqltop
27129
0555
edit
dl
rm
telcheck
2411
0555
edit
dl
rm
temprootreset
186
0555
edit
dl
rm
unsuspend_user
1307
0555
edit
dl
rm
unsusprunner.sh
1840
0555
edit
dl
rm
updatednsadmin
526
0555
edit
dl
rm
update_spf
14972
0555
edit
dl
rm
upgrade-check
9216
0555
edit
dl
rm
vhost_data.py
6221
0555
edit
dl
rm
wp-xray.sh
85816
0555
edit
dl
rm
Edit:
/opt/dedrads/check_php
(4344B)
#!/usr/lib/rads/venv/bin/python3 """Written by MuhammadK""" import argparse import json import subprocess import re from prettytable import PrettyTable # Using IMH's in-house color library from rads.color import red, green, blue, yellow def color_php_version(phpver): """Color PHP version red if < 7.2, green otherwise.""" m = re.search(r'php(\d)(\d)', phpver) if m: version = float(f"{m.group(1)}.{m.group(2)}") if version < 7.2: return red(phpver) return green(phpver) def color_domain(domain): return blue(domain) def color_username(user): return yellow(user) def visible_len(s): """Length without ANSI color codes.""" return len(re.sub(r'\x1B[@-_][0-?]*[ -/]*[@-~]', '', s)) def get_php_fpm_info(): try: output = subprocess.check_output( ['whmapi1', 'php_get_vhost_versions', '--output=json'], text=True ) data = json.loads(output) return data.get('data', {}).get('versions', []) except Exception as e: print(f"Error getting PHP-FPM info: {e}") return [] def print_installed_php_versions(): """Use WHM API to get installed PHP versions.""" try: output = subprocess.check_output( ['whmapi1', 'php_get_installed_versions', '--output=json'], text=True, ) data = json.loads(output) versions = data.get('data', {}).get('versions', []) print(green("Installed PHP Versions:")) print("\n".join(versions)) print() except Exception as e: print(f"Error getting installed PHP versions: {e}") def print_php_sorted_table(pairs): if not pairs: print("No PHP-FPM pool data found.") return headers = [ "PHP Version", "Domain", "User", "Docroot", "MaxChildren", "MaxRequests", "IdleTimeout", ] table = PrettyTable() # table.set_style(TableStyle.DOUBLE_BORDER) table.horizontal_char = "═" table.vertical_char = "║" table.junction_char = "╬" table.field_names = headers table.align = "l" for item in pairs: phpver = item.get('version', 'unknown') domain = item.get('vhost', 'unknown') user = item.get('user', 'unknown') docroot = item.get('docroot', 'unknown') pool = item.get('php_fpm_pool_parms', {}) mc = str(pool.get('pm_max_children', '')) mr = str(pool.get('pm_max_requests', '')) pit = str(pool.get('pm_process_idle_timeout', '')) row = [ color_php_version(phpver), color_domain(domain), color_username(user), docroot, mc, mr, pit, ] table.add_row(row) print(table) def main(): parser = argparse.ArgumentParser( description="List domains with PHP version and PHP-FPM info" ) parser.add_argument( "-v", "--phpver", help="Filter by PHP version (e.g. php7.4, php8.1)" ) parser.add_argument( "-d", "--domain", nargs="+", help="Filter by specific domain(s)" ) parser.add_argument("-u", "--user", help="Filter by cPanel username") args = parser.parse_args() if not args.phpver and not args.domain and not args.user: print_installed_php_versions() versions = get_php_fpm_info() filtered = [] for item in versions: phpver = item.get('version', '') domain = item.get('vhost', '') user = item.get('account', 'unknown') docroot = item.get('documentroot', 'unknown') if args.phpver: filt = args.phpver.lower().replace('.', '').replace('php', '') curr = phpver.lower().replace('ea-php', '') if filt != curr: continue if args.domain and domain not in args.domain: continue if args.user and user != args.user: continue item['user'] = user item['docroot'] = docroot filtered.append(item) def php_sort_key(item): match = re.search(r'php(\d)(\d)', item.get('version', '')) return float(f"{match.group(1)}.{match.group(2)}") if match else 0.0 filtered.sort(key=php_sort_key) print_php_sorted_table(filtered) if __name__ == "__main__": main()
Save
cmd:
run