bash – Ping工具,用于检查服务器是否在线
发布时间:2020-12-15 21:33:34 所属栏目:安全 来源:网络整理
导读:我从各种SOF线程创建的这个工具是否有效?它会起作用吗?我希望每分钟都对服务器进行一次ping测试.如果它连续5次失败,它会发送一封电子邮件.然后它会刷新并重置脚本,以便再次检查. #!/bin/bash# ping checker toolnumOfFails=0incrememnt=1EMAILMESSAGE="/tm
我从各种SOF线程创建的这个工具是否有效?它会起作用吗?我希望每分钟都对服务器进行一次ping测试.如果它连续5次失败,它会发送一封电子邮件.然后它会刷新并重置脚本,以便再次检查.
#!/bin/bash # ping checker tool numOfFails=0 incrememnt=1 EMAILMESSAGE="/tmp/emailmessage.txt" while true; do if ! ping -c 1 google.com ; then #if ping exits nonzero... numOfFails=$(($num + $increment)) else numOfFails=0 fi if ((numOfFails > 4)); then numOfFails=0 echo "SAN is offline!" > $EMAILMESSAGE mail -s "SAN offline" "test@test.com" < $EMAILMESSAGE fi sleep 60 #check again in one minute done 解决方法
您的代码根本不起作用,这是一个修订版本:
#!/bin/bash # ping checker tool FAILS=0 EMAIL_ADDRESS="example@example.com" SERVER="192.168.1.1" SLEEP=60 while true; do ping -c 1 $SERVER >/dev/null 2>&1 if [ $? -ne 0 ] ; then #if ping exits nonzero... FAILS=$[FAILS + 1] else FAILS=0 fi if [ $FAILS -gt 4 ]; then FAILS=0 echo "Server $SERVER is offline!" | mail -s "Server offline" "$EMAIL_ADDRESS" fi sleep $SLEEP #check again in SLEEP seconds done 将example@example.com和192.168.1.1更改为您的电子邮件地址和您正在测试的服务器的IP地址.我建议使用IP地址而不是主机名来防止名称解析错误与连接错误混合. 请注意,尽管这会起作用,但我建议运行一个与cron略有不同的脚本,而不是让它像你想要的那样连续运行,当你从cron运行时,你不需要监视脚本是否正在运行,因为它停止了出于某种原因,服务器的监控也会停止. 像这样的东西每分钟从crontab运行. #!/bin/bash # ping checker tool TMP_FILE="/tmp/ping_checker_tool.tmp" if [ -r $TMP_FILE ]; then FAILS=`cat $TMP_FILE` else FAILS=0 fi EMAIL_ADDRESS="example@example.com" SERVER="192.168.1.1" ping -c 1 $SERVER >/dev/null 2>&1 if [ $? -ne 0 ] ; then #if ping exits nonzero... FAILS=$[FAILS + 1] else FAILS=0 fi if [ $FAILS -gt 4 ]; then FAILS=0 echo "Server $SERVER is offline!" | mail -s "Server offline" "$EMAIL_ADDRESS" fi echo $FAILS > $TMP_FILE (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |