/
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_cpu
(12212B)
#!/bin/bash # Shared RADS Tools, written by Erik Soroka (eriks@imhadmin.net, ext 834) # This tool reports all pertinent CPU data on a particular user for RA review. #lets set some important variables CHECKUSER=$1 SESSIONID=$2 MONTH=`date '+%b'` DAY=`date '+%d'` HOUR=`date '+%H'` NEWESTDATAAVG=`ls -ct1 /var/log/sa/rads/$MONTH/$DAY/*avg* 2>/dev/null | head -1 | cut -d. -f1` NEWESTDATA=`ls -ct1 /var/log/sa/rads/$MONTH/$DAY/??.gz 2>/dev/null | head -1 | cut -d. -f1` if [ ! -f /usr/sbin/sa ]; then echo echo "ERROR: Process accounting unavailable: /usr/bin/sa does not exist, skipping." echo exit 1 fi if [ -z $1 ]; then ####################################################### ## BEGIN GENERAL SERVER REPORT WITHOUT A SPECIFIC USER ####################################################### USERS=`/bin/ls -1A /var/cpanel/users | wc -l` TOTALCP=`/usr/sbin/sa -cm | head -1 | awk '{ print $5 }' | sed 's/cp//'` AVERAGECP=`awk 'BEGIN{printf("%0.4f", '$USERS' / '$TOTALCP')}'` echo echo -e " \033[40;37;2m Displaying server's CPU usage as recorded by process accounting \033[0m" echo -ne " Total # of users: \033[37;1m $USERS" echo -ne "\033[0m " echo -ne "Average CP: $AVERAGECP" echo -ne "\033[0m " echo -ne "Total CP: $TOTALCP" echo echo #top users from process accounting /usr/sbin/sa -m | grep -v nobody | grep -v root | grep -v mailnull | sort -nk4 | tail -10 | head -9 echo if [ -f /var/log/sa/rads/lastcomm.cache ]; then #lets check to see how old the lastcomm cache is, and if >180 secs update it. CURRENT_DATE=$(date +%s) LASTDATA_DATE=$(stat --format=%X /var/log/sa/rads/lastcomm.cache) SECS_OLD=`echo $LASTDATA_DATE $CURRENT_DATE | awk '{ print ($2 - $1) }'` SECS_OLD_INT=`echo $SECS_OLD | cut -d. -f1` if [ $SECS_OLD_INT -gt 180 ]; then LCRUNNING=$(ps uawx | grep lastcommcache | wc -l) if [ $LCRUNNING -le 1 ]; then /opt/dedrads/lastcommcache.sh fi fi else touch /var/log/sa/rads/lastcomm.cache fi #paste together lastcomm output and status column paste /var/log/sa/rads/lastcomm.cache #cleanup rm -f /tmp/.status.$SESSIONID echo exit 0 fi ################################################### ## BEGIN DETAILED REPORT FOR A SPECIFIC USER ($2) ################################################### #didn't receive a session ID if [ -z $2 ]; then SESSIONID=`date +%s` DETAILED=YES fi if [ ! -f /var/cpanel/users/$CHECKUSER ]; then echo echo -e " \E[0;41m \E[5m USER NOT FOUND: THIS IS NOT A VALID CPANEL USER \033[0m" echo exit 0 fi echo -e "\033[30;1m `date` \033[0m" #get most current data /usr/sbin/sa -cmi | grep "$CHECKUSER " > /tmp/.$SESSIONID echo echo -e " \033[40;37;2m Displaying today's most recent CPU usage data as recorded by process accounting \033[0m" #lets pull some info from our last poll archive SADATATIME=`zgrep "$CHECKUSER " $NEWESTDATAAVG.gz | awk '{print $4}'` SADATATIMEPCT=`zgrep "$CHECKUSER " $NEWESTDATAAVG.gz | awk '{print $5}'` SADATAMIN=`zgrep "$CHECKUSER " $NEWESTDATAAVG.gz | awk '{print $6}'` SADATAMINPCT=`zgrep "$CHECKUSER " $NEWESTDATAAVG.gz | awk '{print $7}'` SADATAMININT=`echo "$SADATAMIN" | cut -d'.' -f1` #SADATATOTAL=`zgrep "$CHECKUSER" $NEWESTDATA.gz | awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}'` #lets pull some info from the live/current sa data SADATATIMENOW=`cat /tmp/.$SESSIONID | awk '{print $4}'` SADATATIMEPCTNOW=`cat /tmp/.$SESSIONID | awk '{print $5}'` SADATAMINNOW=`cat /tmp/.$SESSIONID | awk '{print $6}'` SADATAMINPCTNOW=`cat /tmp/.$SESSIONID | awk '{print $7}'` SADATAMININTNOW=`echo "$SADATAMINNOW" | cut -d'.' -f1` if [ ! -z "$SADATAMININTNOW" ]; then if [ "$SADATAMININTNOW" -gt "0" ] && [ "$SADATAMININT" -gt "0" ]; then CPDIFF="`expr $SADATAMININTNOW - $SADATAMININT`" CPSINCE=`/usr/bin/stat -c%y $NEWESTDATAAVG.gz | awk '{print $2}' | cut -d: -f1-2` else CPDIFF="0" CPSINCE="N/A" fi fi if [ "$SADATAMININT" -gt "8" ]; then #average CP for this user is over 8, lets make the figures RED #echo -e " CPU minutes: \033[31;1m $SADATAMIN ($SADATAMINPCT)\033[0m Actual time: \033[31;1m$SADATATIME ($SADATATIMEPCT) \033[0m CPU seconds: \033[31;1m$SADATATOTAL\cpu \033[0m" echo -e " CPU minutes: \033[31;1m $SADATAMINNOW ($SADATAMINPCTNOW)\033[0m Actual time: \033[31;1m$SADATATIMENOW ($SADATATIMEPCTNOW) " else #echo -e " CPU minutes: \033[33;32m $SADATAMIN ($SADATAMINPCT)\033[0m Actual time: \033[33;32m$SADATATIME ($SADATATIMEPCT)\033[0m CPU seconds: \033[33;32m$SADATATOTAL\cpu \033[0m" echo -e " CPU minutes: \033[33;32m $SADATAMINNOW ($SADATAMINPCTNOW)\033[0m Actual time: \033[33;32m$SADATATIMENOW ($SADATATIMEPCTNOW) \033[0m" fi #report the amount of cp burned since the last poll until now echo -e "\033[30;1m (since my last data poll @ $CPSINCE `date +%Z` $CHECKUSER burned another ~$CPDIFF cp) \033[0m" echo if [ -f /var/cpanel/suspended/$CHECKUSER ]; then #user is suspended! echo -e " \E[0;41m \E[5mWARNING: THIS USER IS CURRENTLY SUSPENDED, CHECK ACCOUNT NOTES FOR DETAILS \033[0m" echo fi echo -e "\033[40;37;2m # of executions for CPU intensive processes that have been spawned by this user today \033[0m" zgrep $CHECKUSER $NEWESTDATA.gz > /tmp/.$SESSIONID NUMPHP=`grep php /tmp/.$SESSIONID | wc -l` echo -ne "php: \033[34;1m $NUMPHP \033[0m " NUMPERL=`grep perl /tmp/.$SESSIONID | wc -l` echo -ne "perl: \033[34;1m $NUMPERL \033[0m " NUMIMAP=`grep imap /tmp/.$SESSIONID | wc -l` echo -ne "imap: \033[34;1m $NUMIMAP \033[0m " NUMPOP3=`grep pop3d /tmp/.$SESSIONID | wc -l` echo -ne "pop3: \033[34;1m $NUMPOP3 \033[0m " NUMEXIM=`grep exim /tmp/.$SESSIONID | wc -l` echo -ne "exim: \033[34;1m $NUMEXIM \033[0m " NUMBOX=`grep boxtrap /tmp/.$SESSIONID | wc -l` echo -ne "boxtrap: \033[34;1m $NUMBOX \033[0m " NUMFTP=`grep ftp /tmp/.$SESSIONID | wc -l` echo -ne "ftp: \033[34;1m $NUMFTP \033[0m " NUMCRON=`grep cron /tmp/.$SESSIONID | wc -l` echo -ne "cron: \033[34;1m $NUMCRON \033[0m " ############################################### ### lets display the stats available for today ### 0 3, 6, 9, 12, 15, 18, 21 ############################################### DATAAVG00=`zgrep "$CHECKUSER" /var/log/sa/rads/$MONTH/$DAY/00.gz 2>/dev/null | awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL / 60 }' | cut -c-4` DATAAVG03=`zgrep "$CHECKUSER" /var/log/sa/rads/$MONTH/$DAY/03.gz 2>/dev/null | awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL / 60 }' | cut -c-4` DATAAVG06=`zgrep "$CHECKUSER" /var/log/sa/rads/$MONTH/$DAY/06.gz 2>/dev/null | awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL / 60 }' | cut -c-4` DATAAVG09=`zgrep "$CHECKUSER" /var/log/sa/rads/$MONTH/$DAY/09.gz 2>/dev/null | awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL / 60 }' | cut -c-4` DATAAVG12=`zgrep "$CHECKUSER" /var/log/sa/rads/$MONTH/$DAY/12.gz 2>/dev/null | awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL / 60 }' | cut -c-4` DATAAVG15=`zgrep "$CHECKUSER" /var/log/sa/rads/$MONTH/$DAY/15.gz 2>/dev/null | awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL / 60 }' | cut -c-4` DATAAVG18=`zgrep "$CHECKUSER" /var/log/sa/rads/$MONTH/$DAY/18.gz 2>/dev/null | awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL / 60 }' | cut -c-4` DATAAVG21=`zgrep "$CHECKUSER" /var/log/sa/rads/$MONTH/$DAY/21.gz 2>/dev/null | awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL / 60 }' | cut -c-4` #lets spit the data out into a file, with 8 rows even if the data isn't available yet. if [ "$DATAAVG00" != "0" ]; then echo "12:00AM `date +%Z` :: "$DATAAVG00"cp" > /tmp/.cpumin.$SESSIONID else echo -e "\033[31;30m (no data available)\033[0m" >> /tmp/.cpumin.$SESSIONID fi if [ "$DATAAVG03" != "0" ]; then echo "03:00AM `date +%Z` :: "$DATAAVG03"cp" >> /tmp/.cpumin.$SESSIONID else echo -e "\033[31;30m (no data available)\033[0m" >> /tmp/.cpumin.$SESSIONID fi if [ "$DATAAVG06" != "0" ]; then echo "06:00AM `date +%Z` :: "$DATAAVG06"cp" >> /tmp/.cpumin.$SESSIONID else echo -e "\033[31;30m (no data available)\033[0m" >> /tmp/.cpumin.$SESSIONID fi if [ "$DATAAVG09" != "0" ]; then echo "09:00AM `date +%Z` :: "$DATAAVG09"cp" >> /tmp/.cpumin.$SESSIONID else echo -e "\033[31;30m (no data available)\033[0m" >> /tmp/.cpumin.$SESSIONID fi if [ "$DATAAVG12" != "0" ]; then echo "12:00PM `date +%Z` :: "$DATAAVG12"cp" >> /tmp/.cpumin.$SESSIONID else echo -e "\033[31;30m (no data available)\033[0m" >> /tmp/.cpumin.$SESSIONID fi if [ "$DATAAVG15" != "0" ]; then echo "03:00PM `date +%Z` :: "$DATAAVG15"cp" >> /tmp/.cpumin.$SESSIONID else echo -e "\033[31;30m (no data available)\033[0m" >> /tmp/.cpumin.$SESSIONID fi if [ "$DATAAVG18" != "0" ]; then echo "06:00PM `date +%Z` :: "$DATAAVG18"cp" >> /tmp/.cpumin.$SESSIONID else echo -e "\033[31;30m (no data available)\033[0m" >> /tmp/.cpumin.$SESSIONID fi if [ "$DATAAVG21" != "0" ]; then echo "09:00PM `date +%Z` :: "$DATAAVG21"cp" >> /tmp/.cpumin.$SESSIONID else echo -e "\033[31;30m (no data available)\033[0m" >> /tmp/.cpumin.$SESSIONID fi #lets do some math and get daily history for past 8 days BACK1MON=$(date +%b --date='1 day ago') BACK1DAY="$(date +%e --date='1 day ago')" BACK2MON=$(date +%b --date='2 days ago') BACK2DAY="$(date +%e --date='2 days ago')" BACK3MON=$(date +%b --date='3 days ago') BACK3DAY="$(date +%e --date='3 days ago')" BACK4MON=$(date +%b --date='4 days ago') BACK4DAY="$(date +%e --date='4 days ago')" BACK5MON=$(date +%b --date='5 days ago') BACK5DAY="$(date +%e --date='5 days ago')" BACK6MON=$(date +%b --date='6 days ago') BACK6DAY="$(date +%e --date='6 days ago')" BACK7MON=$(date +%b --date='7 days ago') BACK7DAY="$(date +%e --date='7 days ago')" BACK8MON=$(date +%b --date='8 days ago') BACK8DAY="$(date +%e --date='8 days ago')" function getdaydata() { #lets build the variable based on the desired variable eval HISTMONTH=\$BACK${TIMETRAVEL}MON eval HISTDAYTMP=\$BACK${TIMETRAVEL}DAY #if we're in the beginning of the month, we need to add a "0" prefix for dir structure compatibility if [ "$HISTDAYTMP" -lt 10 ]; then HISTDAY="0$(echo $HISTDAYTMP)" else HISTDAY=$(echo $HISTDAYTMP) fi HISTDATA=`ls -ct1 /var/log/sa/rads/$HISTMONTH/$HISTDAY/*avg* 2>/dev/null | head -1 | cut -d. -f1` if [ -d /var/log/sa/rads/$HISTMONTH/$HISTDAY/ ]; then SADATAMIN=`zgrep "$CHECKUSER " $HISTDATA.gz | awk '{print $6}'` SADATAMINPCT=`zgrep "$CHECKUSER " $HISTDATA.gz | awk '{print $7}'` fi if [ -z $SADATAMIN ]; then NULLDATA=true else echo "$HISTMONTH $HISTDAY :: $SADATAMIN ($SADATAMINPCT)" >> /tmp/.historical.$SESSIONID fi if [ "$NULLDATA" == "true" ]; then echo -e "\033[31;30m (no data available)\033[0m " >> /tmp/.historical.$SESSIONID fi } #now lets call the function to actually collect and output the historical data for TIMETRAVEL in {1..8} do getdaydata $TIMETRAVEL done #lets collect the 8 most CPU intensive processes now /usr/bin/lastcomm $CHECKUSER | awk '{print $1 " :: " $(NF-5) " secs"}' | sort -r -nk3 | head -8 > /tmp/.cpuexpensive.$SESSIONID echo echo #print header for this section echo -e "\033[40;37;2mCPU minutes used today \033[0m \033[40;37;2mHistorical CPU usage data \033[0m \033[40;37;2m Most expensive processes \033[0m" #paste the mini-sections together paste /tmp/.cpumin.$SESSIONID /dev/null /tmp/.historical.$SESSIONID /tmp/.cpuexpensive.$SESSIONID echo #remove temporary session files rm -f /tmp/.$SESSIONID rm -f /tmp/.cpumin.$SESSIONID rm -f /tmp/.cpuexpensive.$SESSIONID rm -f /tmp/.historical.$SESSIONID #EOF
Save
cmd:
run