shell-插件服务监听端口的状态
Posted shark_西瓜甜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell-插件服务监听端口的状态相关的知识,希望对你有一定的参考价值。
# 检查并打印出本机处于监听状态的 服务名 监听端口 进程号
# 定义一个关联数组
declare -A server_port
# 添加值,格式:
# server_port[服务名]=端口
# 服务名称可以自定义,主要用于查询时,方便传递参数,端口需要是程序实际的监听端口
server_port[nginx]=8080
server_port[mysql]=3306
server_port[redis]=7001
server_port[some-a]=8762
server_port[some-b]=8888
echo_color()
# 输入彩色文字
# 使用方法:
# 输出红色的 hello
# echo_color red hello
declare -A col_arr
local col_arr=(
[red]="\\033[31m"
[green]="\\033[32m"
[yellow]="\\033[33m"
[blue]="\\033[34m"
[purple]="\\033[37m"
)
end="\\033[0m"
echo -e "$col_arr[$1] $2 $end"
# 删除表头
echo "" |awk 'BEGIN printf "%-5s %-15s %-s\\n", "进程号","进程名称","IP:端口"'
# 如果没有传递参数,就检查数组中的所有服务的监听情况
if [ -z $1 ];then
n=0
for name in $!server_port[@]
do
# 每次循环 n 的值加 1
((n++))
# ss -ntalp |grep $server_port[$name]|awk -v name=$name -F '[:= ,]+' 'printf "%-8s %-12s %-s\\n", $13,$6,name'
ss -ntalp |grep $server_port[$name]|awk 'print $NF,$4'| awk -v name=$name -F '[=, ]+' 'printf "%-8s %-18s %s\\n", $3,name, $NF'
# 每 5 行内容输出一个空行
if (( n % 5 == 0 ));then
echo
fi
done
echo "当前处于监听状态的服务共: $(echo_color red $(ss -ntalp |wc -l)) 个"
else
# 输入参数了,就校验输入的参数是否在数组的 key 中
for name in $!server_port[@]
do
if [ "$1" == "$name" ];then
# 匹配上,就定义一个零时变量用于后续进行判断
server=$1
break
fi
done
if [ ! -z "$server" ];then
# server 变量不为空,说明输出的参数可以匹配,就检查当前的服务是否监听
ss -ntalp |grep $server_port[$1]|awk 'print $NF,$4'| awk -v name=$1 -F '[=, ]+' 'printf "%-8s %-18s %s\\n", $3,name, $NF'
else
# 不匹配,打印出所有配置好的服务名称,也就是数组所有的 key
echo "输入有误,可以用的值是:"
echo $!server_port[@]
fi
fi
以上是关于shell-插件服务监听端口的状态的主要内容,如果未能解决你的问题,请参考以下文章