mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2025-12-10 07:44:50 +01:00
96 lines
1.7 KiB
Bash
96 lines
1.7 KiB
Bash
#!/bin/sh
|
|
|
|
. /usr/share/libubox/jshn.sh
|
|
|
|
get_nginx_status() {
|
|
port="${1}"
|
|
nginx_pid=$(pgrep "nginx: master process")
|
|
|
|
json_init
|
|
if [ -z "${nginx_pid}" ]; then
|
|
json_add_string "server_status" "Error"
|
|
json_dump
|
|
return
|
|
fi
|
|
|
|
state="Error"
|
|
netstat -nltp | grep "${nginx_pid}/uci.conf" | awk '{print $4}' > /tmp/http_status
|
|
while read server; do
|
|
if [ -z "${server}" ]; then
|
|
continue
|
|
fi
|
|
|
|
sport=$(echo "${server##*:}")
|
|
if [ "${sport}" -eq "${port}" ]; then
|
|
state="Up"
|
|
break
|
|
fi
|
|
done < /tmp/http_status
|
|
|
|
rm -rf /tmp/http_status
|
|
|
|
json_add_string "server_status" "${state}"
|
|
json_dump
|
|
return
|
|
}
|
|
|
|
get_nginx_session_list() {
|
|
netstat -ntp | grep nginx | awk '{print $4,$5}' > /tmp/http_session
|
|
|
|
json_init
|
|
json_add_array "http_sessions"
|
|
while read server client; do
|
|
if [ -z "${server}" ] || [ -z "${client}" ]; then
|
|
continue
|
|
fi
|
|
|
|
sport=$(echo "${server##*:}")
|
|
cip=$(echo "${client}" | sed 's/:[^:]*$//g')
|
|
cport=$(echo "${client##*:}")
|
|
|
|
json_add_object ""
|
|
json_add_string "server_port" "${sport}"
|
|
json_add_string "client_ip" "${cip}"
|
|
json_add_string "client_port" "${cport}"
|
|
json_close_object
|
|
done < /tmp/http_session
|
|
|
|
json_close_array
|
|
|
|
json_dump
|
|
|
|
rm -rf /tmp/http_session
|
|
return
|
|
}
|
|
|
|
case "$1" in
|
|
list)
|
|
echo '{ "http_session": {}, "http_status": {"port":"String"} }'
|
|
;;
|
|
call)
|
|
case "$2" in
|
|
http_session)
|
|
out="$(get_nginx_session_list)"
|
|
if [ -z "${out}" ]; then
|
|
echo '{}'
|
|
else
|
|
echo "$out"
|
|
fi
|
|
;;
|
|
http_status)
|
|
read -r input
|
|
|
|
json_load "${input}"
|
|
json_get_var port "port"
|
|
json_cleanup
|
|
|
|
out="$(get_nginx_status "${port})"
|
|
if [ -z "${out}" ]; then
|
|
echo '{}'
|
|
else
|
|
echo "$out"
|
|
fi
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|