监控端口是否开放,端口未开放关闭虚拟ip,端口开放启动虚拟IP

#!/bin/bash
#该脚本监控本机的一个端口,当端口异常时,停止lvs的本地ip直到恢复。该脚本依托于lvs.sh启动脚本
#目前只支持监控1个vip

#定义常用变量
#配置检查的ip以及端口
check_ip=127.0.0.1
port=8081
vip=10.0.0.52
#脚本目录
path=/web/lvs52.sh


#判断文件是否存在,不存在则退出
if [ ! -e $path ];then
echo "$path is not exist"
exit
fi
#检查nc命令是否存在,不存在提示退出
which nc >& /dev/null
if [ $? != 0 ];
then
echo "on nc command"
exit
fi

#判断虚拟ip状态,运行中返回0,停止返回1,其它返回2
vip_status(){
path=$1
#检查vip运行状态,通过lvs.sh脚本反馈结果判断
state=`/bin/bash $path status`
if [[ $state == 'LVS-DR Running.' ]];
then
echo "$vip is ok"
return 0
elif [[ $state == 'LVS-DR real server Stopped.' ]]
then
echo "$vip is stop"
return 1
else
echo "It is error"
return 2
fi
}

#检查ip、端口是否可达, 可达返回0,不可返回1
port_check(){
ip=$1
port=$2
`nc -v -z $ip $port >& /dev/null`
if [[ $? = "0" ]];then
echo "$ip的$port可以连通"
return 0
else
echo "$ip的$port未开放,error"
return 1
fi
}


#检查端口,如端口正常检查vip,端口异常,停止vip
while true;
do
port_check $check_ip $port
if [[ $? = "0" ]];then
vip_status $path
if [[ $? != 0 ]];then
/bin/sh $path start
fi
else
vip_status $path
if [[ $? == 0 ]];then
`/bin/bash $path stop`
fi
fi
sleep 3
done

posted on   uestc2007  阅读(604)  评论(0编辑  收藏  举报

编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性

导航

< 2025年2月 >
26 27 28 29 30 31 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 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示