实时监测网络是否断线的几种办法(转coolend)
相信现在很多公司或网吧开始考虑双线接入,来实现网络的均衡负载或冗余(备份)线路,保持网络的不间断性。但是如何才能检测某条线路断了呢?有以下几种办法:
1. 物理连接中断(比如网线出现问题)
这个可以通过SNMP来检测(需要现安装 net-snmp 包),如下:
# snmpwalk -v 1 -c public localhost|grep ifDescr
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: dummy0
IF-MIB::ifDescr.3 = STRING: eth0
IF-MIB::ifDescr.4 = STRING: eth1
IF-MIB::ifDescr.5 = STRING: tunl0
IF-MIB::ifDescr.6 = STRING: gre
上面显示 eth0 的编号是3
查看 eth0 的状态:
# snmpwalk -v 1 -c public localhost IF-MIB::ifOperStatus.3
IF-MIB::ifOperStatus.3 = INTEGER: up(1)
如果显示 up 表示连接正常,显示 down 表示网络中断了。
补充:(感谢 孙轩 兄的建议)
更简单的办法是利用 ethtool 工具,下载地址:<url>http://directory.fsf.org/All_Packages_in_Directory/ethtool.html</url>
编译安装:
测试:
....
Link detected: yes
如果最后一行显示 yes 表示连接正常,显示 no 表示网络中断了。
2. 逻辑连接中断(比如网关的线路出了问题等)
可以通过每10s发送一个小的ping包到网关,看是否有回应,一般网关都是允许ping的。
这个可以通过一个expect程序(netwatch.exp)来完成,下面这个脚本发送一个字节为1的ping包给网关,并分析ping的输出信息,如果为 0% packet loss,表示正常,以0退出。如果超时(1秒钟),以1退出。
set target [lindex $argv 0]
set timeout 1
spawn ping -c 1 -s 1 $target
expect {
" 0% packet loss" {
exit 0
}
timeout {
exit 1
}
}
比如网关1为192.168.1.1,网关2为192.168.2.1,那么要监测这两个网关的话,可以这样:
netwatch.exp 192.168.1.1
result1=$?
netwatch.exp 192.168.2.1
result2=$?
if [ "$result1" eq 0 ] && [ "$result2" eq 0 ] ; then
# 如果上次检测时连接丢失,而此次恢复正常
if [ -e /var/run/lost-connection ] ; then
do some recovery action here ...
rm /var/run/lost-connection
fi
# 如果网关1不可达
elif [ "$result1" ne 0 ] ; then
change default route to 192.168.2.1
do some action here, such as iptables NAT
# 创建连接丢失标识
touch /var/run/lost-connection
# 如果网关2不可达
elif [ "$result2" ne 0 ] ; then
change default route to 192.168.1.1
do some action here, such as iptables NAT
# 创建连接丢失标识
touch /var/run/lost-connection
fi
虽然可以通过iptables的MASQUERADE来实现自动切换,但是如果加了策略路由,就不行了。
以上只是个人的想法,希望起到抛砖引玉的作用,如果大家有更好的办法或建议,请不要吝啬提出来哦!
[ 本帖最后由 coolend 于 2005-12-21 11:53 编辑 ]
阅读(755) | 评论(0) | 转发(0) |
上一篇:expect的一点资料
下一篇:putty 使用key验证登陆ssh
- sprintf&&sscanf用法详解
- 女性需要这样去口 @交(组图)...
- 女性需要这样去口 @交(组图)...
- 女性需要这样去口 @交(组图)...
- 女性需要这样去口 @交(组图)...
- linux 常见服务端口
- 什么是shell
- linux socket的bug??
- linux的线程是否受到了保护?...
- 一个适用于windows和linux的抓...
- 制作jffs2文件系统
- make命令详解
- nagios 进程突然增多一个...
- 第七章 进程调度
- ubuntu安装tftp服务器
实时监测网络是否断线的几种办法(转coolend)相关推荐
- 输入一个整数n,统计1-n之间的奇数和。你有几种办法实现?
此专栏是希望通过各种小练习来增强python的知识运用,会不断更新.有同样需求的小伙伴可以实时关注,一起进步. 你行你上,话不多说,直接上题. 问题: 输入一个整数n,统计1~n之间的奇数和.你有几种 ...
- eclipse new server Cannot create a server using the selected type 网上有两种办法,其实原理一样...
eclipse new server Cannot create a server using the selected type 网上有两种办法,其实原理一样 第一种说法: 还真的找到解决的方法了, ...
- WinAPI: SetRect 及初始化矩形的几种办法
为什么80%的码农都做不了架构师?>>> 本例分别用五种办法初始化了同样的一个矩形, 运行效果图: unit Unit1;interfaceusesWindows, Messa ...
- php 怎么防注入,php 防止注入的几种办法
php教程 防止注入的几种办法 其实原来就是我们需要过滤一些我们常见的关键字和符合如: select,insert,update,delete,and,*,等等 例子: function inject ...
- 怎么覆盖默认样式_PPT办公技巧:3种办法快速统一幻灯片中不同形状的显示样式...
应用场景 下图幻灯片中第一排为插入流程图形状"过程""数据""终止"时的默认样式,默认样式中形状填充色为蓝色,形状内文字为等线18号.如果我 ...
- php怎么随机生成二个中文,PHP生成随机字符串的两种办法
通常情况下,生成一个随机字符串,总是先创建一个字符池,然后用一个循环和mt_rand()或rand()生成php随机数,从字符池中随机选取字符,最后拼凑出需要的长度. 本文介绍两种生成随机字符串的办法 ...
- linux 性能测试 antutu,除了安兔兔跑分,还有这6种办法能证明手机强弱
原标题:除了安兔兔跑分,还有这6种办法能证明手机强弱 现在说起手机跑分,已经稀松平常,但早在五年前,很多手机用户根本不知道如何测试手机性能."跑分"这个词汇只会出现在媒体的评测文章 ...
- WordPress备份的七种办法
WordPress备份的七种办法 WordPress备份方法大全 WordPress备份的七种办法 WordPress备份方法大全 备份WordPress的内容有这几种(据不完全统计) 第一种:直接复 ...
- a href=#与 a href=javascript:void(0) 的区别 打开新窗口链接的几种办法
#包含了一个位置信息 默认的锚点是#top 也就是网页的上端 而javascript:void(0) 仅仅表示一个死链接 这就是为什么有的时候页面很长浏览链接明明是#可是 跳动到了页首 而javas ...
最新文章
- 使用IntentService给自己的Android应用写一个文件下载器。
- [Python3网络爬虫开发实战] 1.7.1-Charles的安装
- CodeBlocks 更改 gui 程序为 命令行
- jeesite使用心得(二)
- @Entity,@Indexed @XmlRootElement
- binwalk 提取bootimg_boot.img的解包与打包
- Sublime Text 3 Key
- Qt 调用CUDA静态库和动态库生成与配置
- Letter Combinations of a Phone Number
- Ext2 中如何换行 布局?
- Tomcat下载及安装(Windows)
- python微信语音转发方法_最简单的微信语音转发方法,保证看一遍就会
- 稳定排序与不稳定排序的区别
- Windows下定时运行程序
- 条件概率公式图解推导
- chrome单击打开标贴在当前窗口的新标签页设置
- 抖音直播流实时下载附源码
- JAVA——JAVA知识点集锦(上)
- 韩语学习之——韩语基础入门第二课基本辅音
- c/c++编程学习:空指针是什么?