D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
dedrads
/
Filename :
listacct
back
Copy
#!/bin/bash # WTG - 4/25/2010 MAINIP=$(cat /var/cpanel/mainip); function pointed_local { for DNS in $(grep ^DNS /var/cpanel/users/$1); do domain=$(echo $DNS|awk '{gsub(/DNS.*=/,"",$0);print}') siteip=$(dig +short $domain) plocal="NO" localinterfaces=($(/sbin/ifconfig | grep 'inet addr:' | awk '{gsub(/addr:/,"",$0);printf "%s ",$2}END{printf "\n"}')) for localip in ${localinterfaces[@]}; do # check if the domain is pointed to the server if [ "$localip" == "$siteip" ];then return 1; fi done done return 0; } function check_suspended () { if [ -f /var/cpanel/suspended/$1 ]; then AGE=$(stat --format=%X /var/cpanel/suspended/$1) AGE=$(($(date +%s)-$AGE)) AGE=$(($AGE/86400)) suspended="SUSPENDED $AGE DAYS $(cat /var/cpanel/suspended/$1)" fi } function has_ded_ip () { SITEIP=$(grep IP /var/cpanel/users/$1 | sed -e 's_IP=__') [[ ! "$SITEIP" == "$MAINIP" ]] && return 1 return 0; } function has_ssl () { test -f /var/cpanel/userdata/$1/*SSL && return 1 return 0; } function homedir () { homedir=$(cat /etc/passwd | grep $1 | cut -d: -f6) } function has_local_mx () { for DNS in $(grep ^DNS /var/cpanel/users/$1); do domain=$(echo $DNS|awk '{gsub(/DNS.*=/,"",$0);print}') mxip=$(dig +short $(dig MX polishedstainless.biz +short | awk '{print $2}')) localinterfaces=($(/sbin/ifconfig | grep 'inet addr:' | awk '{gsub(/addr:/,"",$0);printf "%s ",$2}END{printf "\n"}')) for localip in ${localinterfaces[@]}; do # check if the domain is pointed to the server if [ ! "$localip" == "$mxip" ];then return 0; fi done done return 1; } function large_disk { TMPFILE=$(mktemp); echo "Fetching Largest Accounts" for username in $(find /var/cpanel/users/ -type f -exec basename '{}' \;); do #diskspace in megabytes diskspace=$(quota -v $username 2>/dev/null| grep sd | sort -nk2 |tail -1 | awk '{print ($2*1024)/1048576}' ) echo $username $diskspace done | sort -nk2 >> $TMPFILE printf "%10s %15s %15s %15s %18s %18s %18s %s\n" "Username" "Diskspace" "Homedir" "Pointed Local?" "Dedicated IP?" "Has SSL?" "local MX?" "Suspended?" for username in $(tail -50 $TMPFILE|awk '{print $1}'); do #diskspace in megabytes diskspace=$(quota -v $username 2>/dev/null| grep sd | sort -nk2 |tail -1 | awk '{print ($2*1024)/1048576}' ) suspended="ACTIVE" check_suspended $username plocal="NO" pointed_local $username test $? -gt 0 && plocal="YES" dedicated_ip="USES MAIN IP" has_ded_ip $username test $? -eq 1 && dedicated_ip="DEDICATED IP" SSL="NO CERT" has_ssl $username homedir $username test $? -eq 1 && SSL="SSL CERT" localMX="LOCAL MX" has_local_mx $username test $? -eq 1 && SSL="REMOTE MX" printf "%10s %15s %15s %15s %18s %18s %18s %s\n" "$username" "$diskspace" "$homedir" "$plocal" "$dedicated_ip" "$SSL" "$localMX" "$suspended" done #printf "%10s - %25s - %15s - %s\n" "Username" "Diskspace" "Suspended" "Pointed Local?" rm $TMPFILE } function only_suspended () { printf "%10s %15s %15s %15s %18s %18s %18s %s\n" "Username" "Diskspace" "Homedir" "Pointed Local?" "Dedicated IP?" "Has SSL?" "local MX?" "Suspended?" for username in $(find /var/cpanel/suspended/ -type f -exec basename '{}' \;); do diskspace=$(quota -v $username 2>/dev/null| grep sd | sort -nk2 |tail -1 | awk '{print ($2*1024)/1048576}' ) suspended="ACTIVE" check_suspended $username plocal="NO" pointed_local $username dedicated_ip="USES MAIN IP" has_ded_ip $username test $? -eq 1 && dedicated_ip="DEDICATED IP" SSL="NO CERT" has_ssl $username homedir $username test $? -eq 1 && SSL="SSL CERT" localMX="LOCAL MX" has_local_mx $username test $? -eq 1 && SSL="REMOTE MX" printf "%10s %15s %15s %15s %18s %18s %18s %s\n" "$username" "$diskspace" "$homedir" "$plocal" "$dedicated_ip" "$SSL" "$localMX" "$suspended" done } #the current layout is stupid. there should be a gen_report function that takes a username and gets the data, #this would also allow you to look up only one user. this will do until me or someone else comes along to write it. -t. case $1 in --suspended) only_suspended ;; --large_disk) large_disk ;; *) large_disk ;; esac