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-插件服务监听端口的状态的主要内容,如果未能解决你的问题,请参考以下文章

shell基础知识---与监听服务器长连接端口状态

每日一道shell练习(06)——检测端口服务

python粘结shell监听端口设置

python粘结shell监听端口设置

反弹shell小结

案例六:shell脚本监控httpd服务80端口状态