/opt/dedrads
NameSizeModeActions
account_review/-0555rm
check_software_mods/-0555rm
cms_tools/-0555rm
etc/-0555rm
extras/-0555rm
mailparse/-0555rm
mysql/-0555rm
nlp_scripts/-0555rm
oldrads/-0555rm
perl/-0555rm
provision/-0555rm
python/-0555rm
suspended/-0555rm
__pycache__/-0555rm
account-review7990555editdlrm
allfw62590555editdlrm
alp.py165530555editdlrm
autossl_sync62670555editdlrm
check_apache92050555editdlrm
check_bandwidth45460555editdlrm
check_boxtrapper16840555editdlrm
check_cpu122120555editdlrm
check_crons18270555editdlrm
check_dcpumon19730555editdlrm
check_dns18270555editdlrm
check_domlogs610555editdlrm
check_exim37310555editdlrm
check_hacks226040555editdlrm
check_imap52490555editdlrm
check_io66350555editdlrm
check_max_children163410555editdlrm
check_mem16600555editdlrm
check_misc15100555editdlrm
check_pacct52010555editdlrm
check_php43440555editdlrm
check_pop322950555editdlrm
check_prov.py47140555editdlrm
check_server6960555editdlrm
check_size4900555editdlrm
check_software98490555editdlrm
check_spamd24260555editdlrm
check_traffic19330555editdlrm
check_user18870555editdlrm
clean_exim.py63900555editdlrm
clusterfix53430555editdlrm
cmspass.py39700555editdlrm
cms_check.py98250555editdlrm
cms_counter.py367340555editdlrm
cms_creds7130555editdlrm
cms_dumpdb44850555editdlrm
cms_pw14160555editdlrm
cpanel-api70400555editdlrm
cpanel_postgres_manager.py290040555editdlrm
cpmerge46310555editdlrm
cpumon21950555editdlrm
dcpumon.pl12390555editdlrm
dedcheck181270555editdlrm
dns-sync143860555editdlrm
docroot.py44250555editdlrm
du-tree74500555editdlrm
envinfo.py66330555editdlrm
exclude_rbl.py52490555editdlrm
extract-vhost26910555editdlrm
filescan35660555editdlrm
find_warez14600555editdlrm
first_setup.py191200555editdlrm
fixwpcron.py48220555editdlrm
fix_dns_cluster3530555editdlrm
goaccess12177200555editdlrm
hostsfilemods44670555editdlrm
imap_io23230555editdlrm
innodb_converter.py93430555editdlrm
killall9115300555editdlrm
killdns9410555editdlrm
lastcommcache.sh13740555editdlrm
legal_lock_down.sh74500555editdlrm
lil-cpanel520020555editdlrm
listacct45750555editdlrm
mailscan45440555editdlrm
mail_sources.py74070555editdlrm
megaclisas-status386640555editdlrm
migrate2central.sh144180555editdlrm
modify-account406310555editdlrm
modsec_disable.py114610555editdlrm
monarxctl89120555editdlrm
msp.pl277140555editdlrm
mysql_dstat4740555editdlrm
mysql_selector.py731020555editdlrm
nlp45820555editdlrm
procscrape18630555editdlrm
quarantine110830555editdlrm
radsfunctions.sh8630555editdlrm
recent-cp161480555editdlrm
remote_dump183470555editdlrm
reset_cpanel32050555editdlrm
server-load21920555editdlrm
show-conns201050555editdlrm
show-conns-adv.py546670555editdlrm
sparta.py3824980555editdlrm
sqltop271290555editdlrm
telcheck24110555editdlrm
temprootreset1860555editdlrm
unsuspend_user13070555editdlrm
unsusprunner.sh18400555editdlrm
updatednsadmin5260555editdlrm
update_spf149720555editdlrm
upgrade-check92160555editdlrm
vhost_data.py62210555editdlrm
wp-xray.sh858160555editdlrm
Edit: /opt/dedrads/cms_dumpdb (4485B)
#! /usr/lib/rads/venv/bin/python3 """Display database credentials for CMS in path.""" # Author: Daniel K import sys import logging from argparse import ArgumentParser from rads import setup_logging from rads.color import yellow, red, green from cms_tools.cms import CMSFind from cms_tools.cms import CMSStatus from cms_tools.cms import load_modules from cms_tools.helpers import dump_db from cms_tools.common import find_start_path LOGGER = logging.getLogger(__name__) def parse_args(): """Parse command line arguments""" parser = ArgumentParser(description=__doc__) # fmt: off parser.add_argument( "-m", "--modules", metavar='MODULE', nargs='+', help="Search only for specified modules.", ) parser.add_argument( "-l", "--list", action='store_true', help="List available modules and quit.", ) parser.add_argument( "-d", "--depth", action='store', type=int, default=0, help="Set the maximum depth to search. " "The default is 1 if path is set, or 8 otherwise.", ) output_group = parser.add_mutually_exclusive_group() output_group.add_argument( '-v', '--verbose', dest='loglevel', action='store_const', const='debug', help="Use verbose logging.", ) output_group.add_argument( '-q', '--quiet', dest='loglevel', action='store_const', const='critical', help='Log only critical errors', ) output_group.add_argument( '--loglevel', dest='loglevel', choices=['error', 'info', 'debug', 'warning', 'critical'], help="Specify the verbosity of logging output. " "The default is 'warning'.", ) parser.add_argument( "-o", "--output", help="Output logging to the specified file." ) parser.add_argument( "-p", "--dumppath", help="Path to dump databases." ) parser.add_argument( 'user_path', metavar='(USER|PATH)', nargs='?', help="cPanel user. Path must be in this user's home directory, " "and cannot be a relative path.", ) # fmt: on args = parser.parse_args() if args.loglevel is None: logging_level = logging.WARNING else: logging_level: int = getattr(logging, args.loglevel.upper()) if args.output: setup_logging(path=args.output, loglevel=logging_level, print_out=False) else: setup_logging( path='/var/log/messages', loglevel=logging_level, print_out=sys.stderr, ) if args.list: cms_search = CMSFind('List modules', 0) modules_list = load_modules(cms_search, args.modules) print("Available modules: %s" % ', '.join(modules_list)) sys.exit(0) path = find_start_path(args.user_path) if path is None: sys.exit(1) if args.depth == 0: if '/' in args.user_path: depth = 1 else: depth = 8 else: depth = args.depth return depth, path, args.modules, args.dumppath def main(): """Main function for script""" max_depth, start_path, include_modules, dumppath = parse_args() cms_search = CMSFind(start_path, max_depth, 0) load_modules(cms_search, include_modules) LOGGER.debug("Starting path: %s, Maxumim depth: %d", start_path, max_depth) failed_cms = [] failed_dbs = [] dumped_dbs = {} for the_cms in cms_search.find_cms(): if the_cms.status >= CMSStatus.db_is_set: dump_file = dump_db( dbuser=the_cms.db_user, password=the_cms.db_pass, dbname=the_cms.db_name, dump_path=dumppath or the_cms.directory_root, ) if dump_file: dumped_dbs[the_cms.db_name] = dump_file else: failed_dbs.append(the_cms.db_name) else: failed_cms.append(the_cms.directory_root) print(yellow(" === Summary ===")) if failed_cms: print("\nFailed to find credentials for the follwoing CMS:") for docroot in failed_cms: print(red(docroot)) if failed_dbs: print("\nFailed to export the following databases:") for database in failed_dbs: print(red(database)) if dumped_dbs: print("\nSuccessful database dumps:") for database, file in dumped_dbs.items(): print(green(f"{database} {file}")) if __name__ == "__main__": main()