| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- #!/bin/bash
- # info: list system services
- # options: [FORMAT]
- #
- # The function for obtaining the list of configured system services.
- #----------------------------------------------------------#
- # Variable&Function #
- #----------------------------------------------------------#
- # Argument defenition
- format=${1-shell}
- # Includes
- source $VESTA/func/main.sh
- source $VESTA/conf/vesta.conf
- export PATH=$PATH:/sbin
- get_srv_state() {
- srv=$1
- proc_name=${2-$1}
- # Check service status
- state='running'
- # Searching related pids
- if [ -z $3 ]; then
- pids=$(pidof $proc_name |tr ' ' '|')
- else
- pids=$(pidof -x $proc_name |tr ' ' '|')
- fi
- if [ ! -z "$pids" ]; then
- pid=$(echo $pids|cut -f 1 -d \|)
- pids=$(egrep "$pids" $tmp_file)
- # Calculating CPU usage
- cpu=$(echo "$pids" |awk '{ sum += $2} END {print sum}')
- # Calculating memory usage
- mem=$(echo "$pids" |awk '{sum += $3} END {print sum/1024 }')
- mem=$(printf "%.0f\n" $mem)
- # Searching service uptime
- if [ -e "/var/run/$srv.pid" ]; then
- srv_file="/var/run/$srv.pid"
- fi
- if [ -z "$srv_file" ] && [ -e "/var/run/$srv/$srv.pid" ]; then
- srv_file="/var/run/$srv/$srv.pid"
- fi
- if [ -z $srv_file ] && [ -e "/proc/$pid" ]; then
- srv_file="/proc/$pid"
- fi
- if [ ! -z "$srv_file" ]; then
- mtime=$(stat -c "%Y" $srv_file)
- rtime=$((ctime - mtime))
- rtime=$((rtime / 60))
- else
- rtime=0
- fi
- else
- # Service is stopped
- state='stopped'
- mem=0
- cpu=0
- rtime="0"
- fi
- }
- #----------------------------------------------------------#
- # Action #
- #----------------------------------------------------------#
- # Save current proccess list
- tmp_file=$(mktemp)
- ps -eo pid,pcpu,size > $tmp_file
- # Get current time
- ctime=$(date +%s)
- # Web
- service=$WEB_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
- if [ "$service" == 'apache' ]; then
- service='httpd'
- fi
- get_srv_state $service
- str="NAME='$service' SYSTEM='web server' STATE='$state' CPU='$cpu'"
- str="$str MEM='$mem' RTIME='$rtime'"
- fi
- # Backend
- service=$WEB_BACKEND
- if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='backend server' STATE='$state' CPU='$cpu'"
- str="$str MEM='$mem' RTIME='$rtime'"
- fi
- # Proxy
- service=$PROXY_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='reverse proxy' STATE='$state' CPU='$cpu'"
- str="$str MEM='$mem' RTIME='$rtime'"
- fi
- # DNS
- service=$DNS_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
- if [ "$service" == 'bind' ] || [ "$service" == 'bind9' ]; then
- service='named'
- fi
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='dns server' STATE='$state' CPU='$cpu'"
- str="$str MEM='$mem' RTIME='$rtime'"
- fi
- # MAIL
- service=$MAIL_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='mail server' STATE='$state' CPU='$cpu'"
- str="$str MEM='$mem' RTIME='$rtime'"
- fi
- # IMAP
- service=$IMAP_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='pop/imap server' STATE='$state'"
- str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
- fi
- # ANTIVIRUS
- service=$ANTIVIRUS_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
- if [ -e "/etc/redhat-release" ]; then
- if [ "$ANTIVIRUS_SYSTEM" = 'clamav' ];then
- service='clamd'
- fi
- get_srv_state $service
- else
- if [ "$ANTIVIRUS_SYSTEM" = 'clamav-daemon' ];then
- clam_proc_name='clamd'
- fi
- get_srv_state $service $clam_proc_name
- fi
- str="$str\nNAME='$service' SYSTEM='email antivirus' STATE='$state'"
- str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
- fi
- # ANTISPAM
- service=$ANTISPAM_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
- get_srv_state $service spamd
- str="$str\nNAME='$service' SYSTEM='email antispam' STATE='$state'"
- str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
- fi
- # DB
- service=$DB_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
- for db in ${DB_SYSTEM//,/ }; do
- service="$db"
- if [ "$service" == 'mysql' ]; then
- db_proc_name='mysqld'
- fi
- if [ "$service" == 'pgsql' ]; then
- service='postgresql'
- db_proc_name='postmaster'
- if [ ! -e "/etc/redhat-release" ]; then
- db_proc_name='postgres'
- fi
- fi
- get_srv_state $service $db_proc_name
- str="$str\nNAME='$service' SYSTEM='database server' STATE='$state'"
- str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
- done
- fi
- # FTP
- service=$FTP_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='ftp server' STATE='$state' CPU='$cpu'"
- str="$str MEM='$mem' RTIME='$rtime'"
- fi
- # CRON
- service=$CRON_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='job scheduler' STATE='$state'"
- str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
- fi
- # FIREWALL
- service=$FIREWALL_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
- state="stopped"
- /sbin/iptables -L vesta >/dev/null 2>&1
- if [ "$?" -eq 0 ]; then
- state="running"
- fi
- str="$str\nNAME='$FIREWALL_SYSTEM' SYSTEM='firewall'"
- str="$str STATE='$state' CPU='0' MEM='0' RTIME='0'"
- fi
- # Fail2ban
- service=$FIREWALL_EXTENSION
- if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
- get_srv_state $service fail2ban-server script
- str="$str\nNAME='$service' SYSTEM='brute-force monitor' STATE='$state'"
- str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
- fi
- # Defining config
- echo -e "$str" > $tmp_file
- conf=$tmp_file
- # Defining fileds to select
- fields="\$NAME \$SYSTEM \$STATE \$CPU \$MEM \$RTIME"
- # Listing services
- case $format in
- json) json_list ;;
- plain) nohead=1; shell_list ;;
- shell) fields='$NAME $STATE $CPU $MEM $RTIME'
- shell_list | column -t ;;
- *) check_args '1' '0' 'USER [FORMAT]'
- esac
- rm -f $tmp_file
- #----------------------------------------------------------#
- # Vesta #
- #----------------------------------------------------------#
- exit
|