案例需求

判断计算机某个端口是否为OPEN状态,且能正常访问

脚本应用场景

服务监控脚本+监控平台

手动监控

解决问题

实时掌握服务的运行状态,及时处理问题。

脚本思路

1、使用telnet命令连接远端机器的远端端口

2、接收连接反馈并分析结果

3、分析文件内容

4、打印结果

实现代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash
#Description:
#Author: www.mnqz.com
#Created Time:
#监控一个服务端口

#main

temp_file=`mktemp port_status.XXX`

#1、判断依赖命令telnet是否存在
[ ! -x /usr/bin/telnet ]&&echo "telnet: not found command"&& exit 1

#2、测试端口 $1 IP $2 port
( telnet $1 $2 <<EOF
quit
EOF
) &>$temp_file

#3、分析文件中的内容,判断结果
if egrep "\^]" $temp_file &>/dev/null;then
#4、打印结果
echo "$1 $2 is open"
else
echo "$1 $2 is close"
fi

#5、删除临时文件
rm -f $temp_file

案例思考

监控方法
通过systemctl service 服务启动状态
lsof 查看端口是否存在
查看进程是否存在

注意 压力过大 无法响应 | 服务down了 上述东西还在 监测不准确

测试端口是否有响应
推荐 #telnet