监控指定文件所有机器的网络状况

监控文件(ips.txt)里定义的所有的机器的网络情况,如果网络出现异常(ping不通)则记录到日志中。支持ipv4和ipv6。

监控脚本的具体内容如下:

#!/bin/bash

##########################################################################

# Author:                                                                #

#          [email protected]                                               #

# Create:                                                                #

#          2014/11/28                                                    #

# Function:                                                              #

#          Judge network status                                          #

# Notes:   You only need to configure "Email"                            #

##########################################################################

Email="[email protected],[email protected]"

CurrentDate=`date +%Y%m%d\ %H:%M:%S\ %A`

NetworkReportTmp=`date +%Y%m%d`.tmp

function emailinfo() {

echo "" > $NetworkReportTmp

echo "[$CurrentDate network report]" >> $NetworkReportTmp

#       echo "" >> $NetworkReportTmp

}

function sendmail() {

mail -s "$CurrentDate:[Report - Network Report]" "$Email" < $NetworkReportTmp

}

function isIPv4() {

for i in `cat ips.txt | grep "^[0-9]\{1,3\}\.\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}$"`;

do

ping -c 1 $i | grep -q "ttl="

if [ $? != 0 ];then

echo "$i is Unreachable" >> $NetworkReportTmp

else

echo "$i is yes" 2>/dev/null

fi

done

}

function isIPv6() {

# Judge CDCD:910A:2222:5498:8475:1111:3900:2020

for i in `cat ips.txt | grep "^([0-9a-f]{1,4}:){7}[0-9a-f]{1,4}$"`;

do

ping -c 1 $i | grep -q "ttl="

if [ $? != 0 ];then

echo "$i is Unreachable" >> $NetworkReportTmp

else

echo "$i is yes" 2>/dev/null

fi

done

# Judge ::

for i in `cat ips.txt | grep "^::$"`;

do

ping -c 1 $i | grep -q "ttl="

if [ $? != 0 ];then

echo "$i is Unreachable" >> $NetworkReportTmp

else

echo "$i is yes" 2>/dev/null

fi

done

# Judge F:F:F::1:1 F:F:F:F:F::1 F::F:F:F:F:1

for i in `cat ips.txt | grep "^(([0-9a-f]{1,4}:){1,6})((:[0-9a-f]{1,4}){1,6})$"`;

do

ping -c 1 $i | grep -q "ttl="

if [ $? != 0 ];then

echo "$i is Unreachable" >> $NetworkReportTmp

else

echo "$i is yes" 2>/dev/null

fi

done

# Judge F:F:10F::

for i in `cat ips.txt | grep "^([0-9a-f]{1,4}:){1,7}:$"`;

do

ping -c 1 $i | grep -q "ttl="

if [ $? != 0 ];then

echo "$i is Unreachable" >> $NetworkReportTmp

else

echo "$i is yes" 2>/dev/null

fi

done

# Judge ::F:F:10F

for i in `cat ips.txt | grep "^:(:[0-9a-f]{1,4}){1,7}$"`;

do

ping -c 1 $i | grep -q "ttl="

if [ $? != 0 ];then

echo "$i is Unreachable" >> $NetworkReportTmp

else

echo "$i is yes" 2>/dev/null

fi

done

# Judge F:E:E:A:B:C:10.0.0.1

for i in `cat ips.txt | grep "^([0-9a-f]{1,4}:){6}(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$"`;

do

ping -c 1 $i | grep -q "ttl="

if [ $? != 0 ];then

echo "$i is Unreachable" >> $NetworkReportTmp

else

echo "$i is yes" 2>/dev/null

fi

done

# Judge F::10.0.0.1

for i in `cat ips.txt | grep "^([0-9a-f]{1,4}:){1,5}:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$"`;

do

ping -c 1 $i | grep -q "ttl="

if [ $? != 0 ];then

echo "$i is Unreachable" >> $NetworkReportTmp

else

echo "$i is yes" 2>/dev/null

fi

done

# Judge ::10.0.0.1

for i in `cat ips.txt | grep "^::(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$"`;

do

ping -c 1 $i | grep -q "ttl="

if [ $? != 0 ];then

echo "$i is Unreachable" >> $NetworkReportTmp

else

echo "$i is yes" 2>/dev/null

fi

done

}

#main()

emailinfo

isIPv4

isIPv6

sendmail

rm -f $NetworkReportTmp

时间: 2024-10-05 08:18:41

监控指定文件所有机器的网络状况的相关文章

使用WatchService监控指定目录内的文件的改动

package coin; import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.Path; import java.nio.file.StandardWatchEventKinds; import java.nio.file.WatchEvent; import java.nio.file.WatchKey; import java.nio.file.WatchService; /*

linux用于后台监控指定程序运行状况的脚本(如果程序死了则重启程序)

#!/bin/sh while true do ps | grep "main_3g" | grep -v "grep" > /dev/null if [ "$?" -ne 0 ] then ls /root/main_3g > /dev/null if [ "$?" -eq 0 ] then chmod 777 /root/main_3g /root/main_3g & echo "main_3

[Erlang_Question27]如何监控指定目录下的*.beam文件,如果有改动就更新到指定的节点?

在Erlang In Anger第二章中讲到使用rebar来创建一个Erlang项目(Application或Project) 但美中不足的只是给出了指引,但没有给出详细的步骤. 下面我们就使用rebar一步步来创建一个典型的Application. 但在此之前,最好先理解下Erlang In Anger中第二章节所讲关于application结构的部分:http://zhongwencool.gitbooks.io/erlang_in_anger/ 通过本小节,你可以了解使用rebar加入开源

C# 打开指定文件或网址

System.Diagnostics.Process.Start的妙用: 文件夹打开时自动选中一个文件,比如自动选中此目录下的指定文件方法: Process.Start("Explorer", "/select," + filePath); 我们经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑中某个指定的硬盘分区及文件夹,  甚至是"控制面板"相关的东西, 那么如何做呢?  答案是使用System.Di

使用nagios监控指定的端口号

方法一: 实验思路: 第一步在commands.cfg文件中定义你要使用的检测命令: vi /usr/local/nagios/etc/objects/commands.cfg define command{ command_name    tcp60910              #命令名 command_line    $USER1$/check_tcp -H $HOSTADDRESS$ -p 60910 -t 60    #命令内容,该处调用到check_tcp这个脚本 -P后面是端口.

tail 监控日志文件

ail命令可以输出文件的尾部内容,默认情况下它显示文件的最后十行.它常用来动态监视文件的尾部内容的增长情况,比如用来监视日志文件的变化.与tail命令对应的是head命令,用来显示文件头部内容. 常用参数 格式:tail file 输出指定文件file的尾部内容,默认输出最后十行内容(output the last part of files.Print  the  last 10 lines of each FILE to standard output. ) 格式:tail file1 fi

Unity获取Android和iOS手机系统电量及网络状况

最开始考虑使用中间静态链接库来调用手机系统自带的API,但是在研究的过程中发现Android系统将电量等信息记录在了固定的文件中,所以只需要在C#中直接读取就可以而不需要中间库. a.Android版 1.通过C#直接读取,下面的GetBatteryLevel()方法 int GetBatteryLevel() { try { string CapacityString = System.IO.File.ReadAllText("/sys/class/power_supply/battery/c

删除一个目录下的所有文件,但保留一个指定文件

此题问题虽小,但是初学者还是很难给出合理的答案的!本文来自老男孩21期网络班学员 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 面试题:删除一个目录下的所有文件,但保留一个指定文件 解答: 假设这个目录是/xx/,里面有file1,file2,file3..file10  十个文件

[rsync+inotify]——监控客户端文件变化,rsync同步到服务器

关于rsync的配置请参考博文:http://www.cnblogs.com/snsdzjlz320/p/5630695.html 实验环境 (1) Rsync服务器:10.0.10.158 (2) Rsync客户端:10.0.10.173 Inotify都在客户端配置 1.查看系统是否支持inotify # ls /proc/sys/fs/inotify/ max_queued_events max_user_instances max_user_watches  #这些值一般不去修改但在监控