diff --git a/bin/v-list-sys-services b/bin/v-list-sys-services new file mode 100755 index 00000000..f04eb3d7 --- /dev/null +++ b/bin/v-list-sys-services @@ -0,0 +1,205 @@ +#!/bin/bash +# info: list system config +# options: [FORMAT] +# +# The function for obtaining the list of system parameters. + + +#----------------------------------------------------------# +# Variable&Function # +#----------------------------------------------------------# + +# Argument defenition +format=${1-shell} + +# Includes +source $VESTA/conf/vesta.conf +source $VESTA/func/main.sh + +get_srv_state() { + srv=$1 + proc_name=${2-$1} + + # Check service status + /etc/init.d/$srv status > /dev/null 2>&1 + if [ $? -eq 0 ]; then + state='running' + + # Calculate cpu and memory usage + cpu=0 + mem=0 + for pid in $(/sbin/pidof $proc_name); do + pid_mem=$(pmap -x $pid | tail -n1 | awk '{print $3}') + pid_cpu=$(grep "^$pid " $tmp_file | cut -f 2 -d ' ') + cpu=$((cpu + pid_cpu)) + mem=$((mem + pid_mem)) + done + mem=$((mem / 1024)) + + # Get pid date + if [ ! -z $pid ] && [ -e "/proc/$pid/cmdline" ]; then + mtime=$(stat -c "%Y" /proc/$pid/cmdline) + ptime=$(date -d @$mtime +%T) + pdate=$(date -d @$mtime +%F) + fi + else + # Service is stopped + state='stopped' + mem=0 + cpu=0 + ptime="$TIME" + pdate="$DATE" + fi +} + + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + +# Save current proccess list +tmp_file=$(mktemp) +ps aux | awk '{print $2" "$3}' | cut -f 1 -d '.' > $tmp_file + +# Proxy +service=$PROXY_SYSTEM +spnd='yes' +if [ ! -z "$service" ] && [ "$service" != 'no' ]; then + spnd='no' + get_srv_state $service +fi +str="NAME='$service' SYSTEM='proxy' STATE='$state' CPU='$cpu'" +str="$str MEM='$mem' SUSPENDED='$spnd' TIME='$ptime' DATE='$pdate'" + +# Web +service=$WEB_SYSTEM +spnd='yes' +if [ ! -z "$service" ] && [ "$service" != 'no' ]; then + spnd='no' + if [ "$service" == 'apache' ]; then + service='httpd' + fi + get_srv_state $service +fi +str="$str\nNAME='$service' SYSTEM='web' STATE='$state' CPU='$cpu'" +str="$str MEM='$mem' SUSPENDED='$spnd' TIME='$ptime' DATE='$pdate'" + +# DNS +service=$DNS_SYSTEM +spnd='yes' +if [ ! -z "$service" ] && [ "$service" != 'no' ]; then + spnd='no' + if [ "$service" == 'bind' ]; then + service='named' + fi + get_srv_state $service +fi +str="$str\nNAME='$service' SYSTEM='dns' STATE='$state' CPU='$cpu'" +str="$str MEM='$mem' SUSPENDED='$spnd' TIME='$ptime' DATE='$pdate'" + +# MAIL +service=$MAIL_SYSTEM +spnd='yes' +if [ ! -z "$service" ] && [ "$service" != 'no' ]; then + spnd='no' + get_srv_state $service +fi +str="$str\nNAME='$service' SYSTEM='mail' STATE='$state' CPU='$cpu'" +str="$str MEM='$mem' SUSPENDED='$spnd' TIME='$ptime' DATE='$pdate'" + +# IMAP +service=$IMAP_SYSTEM +spnd='yes' +if [ ! -z "$service" ] && [ "$service" != 'no' ]; then + spnd='no' + get_srv_state $service +fi +str="$str\nNAME='$service' SYSTEM='imap' STATE='$state' CPU='$cpu'" +str="$str MEM='$mem' SUSPENDED='$spnd' TIME='$ptime' DATE='$pdate'" + +# ANTIVIRUS +service=$ANTIVIRUS_SYSTEM +spnd='yes' +if [ ! -z "$service" ] && [ "$service" != 'no' ]; then + spnd='no' + if [ "$ANTIVIRUS_SYSTEM" = 'clamav' ]; then + service='clamd' + fi + get_srv_state $service +fi +str="$str\nNAME='$service' SYSTEM='antivirus' STATE='$state' CPU='$cpu'" +str="$str MEM='$mem' SUSPENDED='$spnd' TIME='$ptime' DATE='$pdate'" + +# ANTISPAM +service=$ANTISPAM_SYSTEM +spnd='yes' +if [ ! -z "$service" ] && [ "$service" != 'no' ]; then + spnd='no' + get_srv_state $service spamd +fi +str="$str\nNAME='$service' SYSTEM='antispam' STATE='$state' CPU='$cpu'" +str="$str MEM='$mem' SUSPENDED='$spnd' TIME='$ptime' DATE='$pdate'" + +# DB +service=$DB_SYSTEM +spnd='yes' +if [ ! -z "$service" ] && [ "$service" != 'no' ]; then + spnd='no' + for db in ${DB_SYSTEM//,/ }; do + service="$db" + if [ "$service" == 'mysql' ] && [ ! -e "/etc/init.d/$service" ]; then + service='mysqld' + fi + get_srv_state $service + str="$str\nNAME='$service' SYSTEM='db' STATE='$state' CPU='$cpu'" + str="$str MEM='$mem' SUSPENDED='$spnd' TIME='$ptime' DATE='$pdate'" + done +else + str="$str\nNAME='$service' SYSTEM='db' STATE='$state' CPU='$cpu''" + str="$str MEM='$mem' SUSPENDED='$spnd' TIME='$ptime' DATE='$pdate'" +fi + +# FTP +service=$FTP_SYSTEM +spnd='yes' +if [ ! -z "$service" ] && [ "$service" != 'no' ]; then + spnd='no' + get_srv_state $service +fi +str="$str\nNAME='$service' SYSTEM='ftp' STATE='$state' CPU='$cpu'" +str="$str MEM='$mem' SUSPENDED='$spnd' TIME='$ptime' DATE='$pdate'" + +# CRON +service=$CRON_SYSTEM +spnd='yes' +if [ ! -z "$service" ] && [ "$service" != 'no' ]; then + spnd='no' + get_srv_state $service +fi +str="$str\nNAME='$service' SYSTEM='ftp' STATE='$state' CPU='$cpu'" +str="$str MEM='$mem' SUSPENDED='$spnd' TIME='$ptime' DATE='$pdate'" + +# Defining config + +echo -e "$str" > $tmp_file +conf=$tmp_file + +# Defining fileds to select +fields="\$NAME \$SYSTEM \$STATE \$CPU \$MEM \$SUSPENDED \$TIME \$DATE" + +# Listing services +case $format in + json) json_list ;; + plain) nohead=1; shell_list ;; + shell) fields='$NAME $STATE $CPU $MEM $SUSPENDED $TIME $DATE' + shell_list | column -t ;; + *) check_args '1' '0' 'USER [FORMAT]' +esac + +rm -f $tmp_file + +#----------------------------------------------------------# +# Vesta # +#----------------------------------------------------------# + +exit