您可以简单地监控托管在某个远程 IDC 中的远程系统。系统脱网的原因可能有很多。这个简单的脚本对于监控您自己的家庭或工作小型网络非常有用。
了解 ping 命令
ping 是测试网络连接的基本且实用的命令之一。例如,您可以使用以下命令向 example.com 发送 4 个 ping 请求:
输出:
$ ping -c 4 example.com
$ ping -c 4 router
PING 路由器( 192.168.1.254 ) 56 ( 84 )字节数据。 来自路由器的64 个字节( 192.168.1.254 ) : icmp_seq = 1 ttl=64 time=1.02 ms来自路由器的 64 个字节( 192.168.1.254 ) : icmp_seq = 2 ttl=64 time=0.824 ms 来自路由器的64个字节( 192.168.1.254 ) : icmp_seq = 3 ttl=64 time=0.826 ms 来自路由器( 192.168.1.254 )的64 个字节: icmp_seq = 4 ttl=64 time=0.843 ms --- 路由器 ping 统计数据 --- 发送4 个数据包,接收4 个数据包,0 % 数据包丢失,时间 3012ms rtt 最小值/平均值/最大值/mdev = 0.824/0.880/1.027/0.085 毫秒
只需查看输出行“ —router ping stats— ”并记下“4 returned”字段。这是验证 4 个数据包发送和接收是否成功的关键。您可以使用以下命令提取单词“4 returned”:
$ ping -c4 router | grep 'received'
输出:
发送 4 个数据包,接收 4 个数据包,0% 数据包丢失,时间 3012ms
下一个逻辑步骤是使用 awk 命令获取接收到的数字 4:
$ ping -c4 router | grep 'received' | awk -F',' '{ print $2}'
输出:
4 已收到
最后一步是获取 4 个数字并删除收到的单词:
$ ping -c4 router | grep 'received' | awk -F',' '{ print $2}' | awk '{ print $1}'
输出:
4
使用 ping 命令进行系统监控的 Shell 脚本
现在您知道如何获取接收到的数据包,是时候使用简单的脚本自动化整个过程了。这是一个示例 shell 脚本(下载链接):
#!/bin/bash HOSTS = "example.com theos.in 路由器" 计数= 4 for $HOSTS 中的 myHost do count = $ ( ping - c $COUNT $myHost | grep '已收到' | awk - F ',' '{ print $2 }' | awk '{ print $1 }' ) if [ $count - eq 0 ] ; 然后 # 100% 失败 echo "Host : $myHost is down (ping failed) at $(date)" 菲 完毕
您可以在此处下载完整的工作脚本,该脚本会发送电子邮件警报。
设置 Cron 作业
为了每 30 分钟运行一次此脚本(或根据您的要求),您需要将脚本安装为cron 作业:
$ chmod +x /path/to/monitorHost
使用编辑器将 monitorHost 脚本安装为 crontab:
$ crontab -e
附加以下 cronjob 条目:
保存并关闭文件。
# Monitor remote host every 30 minutes using monitorHost
30 * * * * /home/vivek/bin/monitorHost