一:监控方法
(1)通过systemctl service 服务启动状态
(2)lsof 查看端口是否存在
(3)查看进程是否存在
【服务假死怎么办 压力过大 无法响应 服务down了,东西还在(僵尸进程)】
(4)测试端口是否有响应 【推荐】
#telnet 协议
二:代码及其测试结果
#main
port_status () {
temp_file=`mktemp port_status.XXX`
#1、判断依赖命令telnet是否存在
[ ! -x /usr/bin/telnet ] && echo "telenet: not found command" && exit 1 #-x可执行文件
#2、测试端口
#$1代表IP $2代表端口port 比如telenet 192.168.10.50 22
( telnet $1 $2 <<EOF
quit
EOF
) &>$temp_file #写入到临时文件
#3、分析文件中的内容,判断结果
if egrep "\^]" $temp_file &>/dev/null;then #涉及到符号记得考虑是否需要转义
echo "$1 $2 is open"
else
echo "$1 $2 is close"
fi
rm -f $temp_file
}
#函数带参的问题,如果函数内部需要参数,需要传参
port_status $1 $2
[root@localhost opt]# vi 32test.sh
[root@localhost opt]# sh 32test.sh 192.168.10.50 8080
192.168.10.50 8080 is close
[root@localhost opt]# sh 32test.sh 192.168.10.50 22
192.168.10.50 22 is open
补充:
(1)创建临时文件
mktemp port_status.XXX
(2)创建临时文件夹
mktemp -d port_status.XXX