#!/usr/bin/env bash help="Usage: fcgi \nExample: fcgi 127.0.0.1 3000 ping" function ping { SCRIPT_NAME=/ping SCRIPT_FILENAME=/ping REQUEST_METHOD=GET cgi-fcgi -bind -connect $address:$port } function status { SCRIPT_NAME=/status SCRIPT_FILENAME=/status REQUEST_METHOD=GET cgi-fcgi -bind -connect $address:$port | sed -n "$1p;$1q" | awk -F: '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//' } function status_clear { SCRIPT_NAME=/status SCRIPT_FILENAME=/status REQUEST_METHOD=GET cgi-fcgi -bind -connect $address:$port } address=$1 port=$2 parameter=$4 case "$3" in "ping" ) ping | tail -n1 ;; "status" ) case "$parameter" in "pool" ) status_clear | sed -n '6p;6q' | awk '{print $2}' ;; "version" ) status_clear | sed -n '1p;1q' | awk -F/ '{print $2}' ;; "process_manager" ) status 7 ;; "accepted_conn" ) status 10 ;; "listen_queue" ) status 11 ;; "max_listen_queue" ) status 12 ;; "listen_queue_len" ) status 13 ;; "idle_processes" ) status 14 ;; "active_processes" ) status 15 ;; "total_processes" ) status 16 ;; "max_active_processes" ) status 17 ;; "max_children_reached" ) status 18 ;; "slow_requests" ) status 19 ;; "latency" ) time=$(date +%s%N) ping >> /dev/null echo "$(( ($(date +%s%N)-$time) / 1000000 ))" ;; "all" ) status_clear ;; * ) echo -e "Bad command!\n$help" ;; esac ;; * ) echo -e "Bad command $3!\n$help" ;; esac