我正在运行以下命令:
ping ldap.corp.XXXXX.com
LDAP 服务器启动:
Pinging ldapeu.corp.XXXXX.com [XX.XXX.XXX.XX] with 32 bytes of data:
Reply from XX.XXX.XXX.XX: bytes=32 time<1ms TTL=252
LDAP 服务器关闭:
ping: ldap.corp.XXXXX.com: Name or service not known
如何在 KSH 文件中实现代码来识别 LDAP 服务器何时关闭?
答案1
ping
根据成功程度返回不同的退出代码。 ping 有多种实现,其行为可能略有不同,但引用自他们的联机帮助页之一
如果平根本没有收到任何回复数据包,它将以代码 1 退出。如果数据包数数和最后期限都指定了,并且少于数数数据包被接收到的时间最后期限已到达,它也会以代码 1 退出。出现其他错误时,它会以代码 2 退出。否则,它会以代码 0 退出。这使得可以使用退出代码来查看主机是否处于活动状态。
除了 0 表示成功和非零表示失败之外,您的 ping 可能会使用不同的值;您可以echo $?
在运行后检查。
还有其他fping
用于监视的 ping 程序(例如 )。
所以你可以做一些简单的事情:
if ping -c 2 ldapeu.corp.XXXXX.com ; then
echo up
else
echo down
fi
(您可以使用类似的方法if ping … >/dev/null 2>/dev/null; then
来删除所有消息ping
打印。)
答案2
您可以使用ping
的退出值来了解主机是否已启动:
0 everything ok
1 no response or lost packages
2 other errors (unable to resolve is one of them)
因此,例如:
ping -c 5 hostname || error_script.sh
error_script.sh
仅当出现问题时才会运行。