shell-生产脚本检查服务和端口

1. 代码

# 检查并打印出本机处于监听状态的 服务名 监听端口 进程号
# 定义一个关联数组
declare -A server_port

# 添加值,格式:
# server_port[服务名]=端口
# 服务名称可以自定义,主要用于查询时,方便传递参数,端口需要是程序实际的监听端口
server_port[server-a]=81
server_port[server-ab]=88
server_port[server-abc]=97
server_port[server-cab]=87

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)) 个;其中 JAVA 服务有: $(echo_color red $(ss -ntalp |grep java -c)) 个"
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

2. 使用

2.1 检查所有已配置的服务

将脚本内容保存到文件 check-port, 并将check-port 放置到服务器的 /usr/bin/ 目录下,最后授权 可执行权限。
在这里插入图片描述

2.2. 检查已配置的指定服务

在这里插入图片描述

2.3. 输错了

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shark_西瓜甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值