shell脚本执行ping,telnet命令分析返回
#!/bin/bash #各采集机ip,port,gathername,vendorname,earlyserverstate(上次检测状态1:通 2:不通),lateserverstate(这次检测状态1:通 2:不通) ip1="000.00.000.000" port1="8080" gathername1="上海" vendorname1="HW" earlyserverstate1="1" nowserverstate1="1" #ping,telnet然后写入到服务器状态 serverPT() { PINGresult=`ping -c 1 $1 | grep "alive"` if [ "X${PINGresult}" != "X" ];then echo ping $1 ok TELNETresult=`(sleep 5;) | telnet $1 $2 | grep "Connected"` if [ "X${TELNETresult}" != "X" ];then echo telnet $1 $2 ok else $3="2" fi else $3="2" fi } str="" #根据服务器状态写入文本 serverWrite() { if [ $6="2" ];then if [ $6 != $5 ];then str="$str n自动检测到IP地址:"$1"网络出现问题,请检查。(该设备属地为"$3 "设备厂家为"$4")" else #从上次到现在仍未PT通 传给oneservercheck oneServerCheck $1 $2 $3 $4 $5 $6 fi else echo "109" fi } #得到从上次到现在仍然不通的网络 oneServerCheck() { PINGresult=`ping -c 1 $1 | grep "alive"` if [ "X${PINGresult}" != "X" ];then TELNETresult=`(sleep 5;) | telnet $1 $2 | grep "Connected"` if [ "X${TELNETresult}" != "X" ];then #echo telnet $1 $2 ok $6 = "1" #服务器主机名称,系统时间(邮件内容) echo "电信宽带测试应用主机" > /CityPT/cpt.txt date >> //CityPT/cpt.txt echo $1"网络已恢复正常。(该设备属地为"$3 "设备厂家为"$4")" >> /CityPT/cpt.txt SetMail.sh else echo "345" fi else echo "300" fi } #服务器主机名称,系统时间(邮件内容) echo "电信宽带测试应用主机" > /CityPT/cpt.txt date >> /CityPT/cpt.txt #运行 serverPT $ip1 $port1 $nowserverstate1 serverWrite $ip1 $port1 $gathername1 $vendorname1 $earlyserverstate1 $nowserverstate1 if [ str != "" ];then SetMail.sh else echo "QQ" fi
过程就是有多个地址
有一个ping telnet方法
然后挨个把地址端口什么的传给它
如果通了 不予理会
不通就给 现状态赋值2
如果原状态是1 现状态是2 那么就写入内容到 cpt文件中 (因为邮件的内容是读取这个文件)
然后判断如果原状态也为2的话就不调用setmail(也就是发邮件的程序,因为这里考虑到一开始它不通的时候已经发过了就不发送了)
现在问题有2个 一个就是我在用memo判断的地方肯定是错了 因为现在cpt文件里面只有str 3个字母
还有一个问题就是其实我开始的打算是 如果某个地址仍然不通 那么我就新生成个脚本 也就是用脚本生成追踪脚本 每个5分钟就ping telnet这个地址 一直到通了 发封邮件然后 自己删除自己什么的
但是现在这个简单的功能我还没有实现 所以 我打算后面再做那个
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我在我的服务器上搭建好了 nagios但是什么脚本也没有用 只是最简单的搭建成功了 因为都是英文的 我有点看不懂 而且我的那个nagios拓扑图那一页显示还不正常 我原来提过nagios的问题 希望您可以帮我看看 我看您的nagios水平相当高
你说下怎么看吧