Linux 监控远程端口的脚本,如果不成功则启动脚本
Linux script to monitor remote port and launch script if not successful
RHEL 7.1 是 OS 这将用于。
我有两台相同的服务器(A 和 B)。服务器 B 需要监视服务器 A 上的端口,如果它关闭 30 秒,则启动脚本。我读到 netcat 在 RHEL 7 上被 ncat 取代,所以这是我目前所拥有的:
#!/bin/bash
Server=10.0.0.1
Port=123
ncat $Server $Port &> /dev/null; echo $?
如果端口打开,输出为 0。如果端口关闭,输出为 1。我只是不确定如何进行下一部分 "if down for 30 seconds, then launch x script"
如有任何帮助,我们将不胜感激。提前致谢。
#!/bin/bash
Server=10.0.0.1
Port=123
port_was_down=0
while true; do
sleep 30
if ! ncat $Server $Port &> /dev/null; then
if [[ $port_was_down == "1" ]]; then
run-script
exit
else
port_was_down=1
fi
else
port_was_down=0
fi
done
如果你真的想编写脚本而不是使用像 Pacemaker as @CharlesDuffy 建议的专用工具,那么你可以这样做:
- 运行无限循环
- 检查端口
- 如果up,保存时间戳
- 否则检查与上次保存的时间戳的区别
- 如果超过阈值的时间,则运行脚本
- 睡一会
例如:
#!/bin/bash
server=10.0.0.1
port=123
seconds=30
seen=$(date +%s)
while :; do
now=$(date +%s)
if ncat $server $port &> /dev/null; then
seen=$now
else
if ((now - seen > seconds)); then
run-script && exit
fi
fi
sleep 1
done
使用 nmap 怎么样?
类似于:
TIMEOUT=30s;
HOST=10.0.0.1;
PORT=123;
if nmap --max-rtt-timeout $TIMEOUT --min-rtt-timeout $TIMEOUT -p $PORT $HOST | grep "^$PORT.*open"; then
echo 'OPEN';
else
echo 'CLOSED';
fi;
RHEL 7.1 是 OS 这将用于。
我有两台相同的服务器(A 和 B)。服务器 B 需要监视服务器 A 上的端口,如果它关闭 30 秒,则启动脚本。我读到 netcat 在 RHEL 7 上被 ncat 取代,所以这是我目前所拥有的:
#!/bin/bash
Server=10.0.0.1
Port=123
ncat $Server $Port &> /dev/null; echo $?
如果端口打开,输出为 0。如果端口关闭,输出为 1。我只是不确定如何进行下一部分 "if down for 30 seconds, then launch x script"
如有任何帮助,我们将不胜感激。提前致谢。
#!/bin/bash
Server=10.0.0.1
Port=123
port_was_down=0
while true; do
sleep 30
if ! ncat $Server $Port &> /dev/null; then
if [[ $port_was_down == "1" ]]; then
run-script
exit
else
port_was_down=1
fi
else
port_was_down=0
fi
done
如果你真的想编写脚本而不是使用像 Pacemaker as @CharlesDuffy 建议的专用工具,那么你可以这样做:
- 运行无限循环
- 检查端口
- 如果up,保存时间戳
- 否则检查与上次保存的时间戳的区别
- 如果超过阈值的时间,则运行脚本
- 睡一会
例如:
#!/bin/bash
server=10.0.0.1
port=123
seconds=30
seen=$(date +%s)
while :; do
now=$(date +%s)
if ncat $server $port &> /dev/null; then
seen=$now
else
if ((now - seen > seconds)); then
run-script && exit
fi
fi
sleep 1
done
使用 nmap 怎么样? 类似于:
TIMEOUT=30s;
HOST=10.0.0.1;
PORT=123;
if nmap --max-rtt-timeout $TIMEOUT --min-rtt-timeout $TIMEOUT -p $PORT $HOST | grep "^$PORT.*open"; then
echo 'OPEN';
else
echo 'CLOSED';
fi;