实时监测网络是否断线的几种办法(转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 ...
最新文章
- 解密NTFS下经EFS加密的文件
- Spring学习笔记之Design of DispatcherServlet
- php mongo 查询count,[PHP] 使用PHP在mongodb中进行count查询
- crawler py
- 漂亮大气!小米武汉总部正式开园:从签约到建成使用仅用时两年
- c mysql 并发处理_mysql队列中实现并发读的实现方法解析
- checkout 撤销修改_撤销修改(第8篇)
- wince6-Error: failed PB timebomb check
- Vue响应式数据: Observer模块实现 1
- java算法知识点_Java知识点梳理——数据结构与算法
- 前端程序员 学习书籍推荐
- c语言错误码2,平方根2.我做过C语言的一些错误
- scope hosting_针对Web开发人员的Cloud Hosting和CDN服务–最佳
- Axure之中继器的使用
- 美国计算机工程博士年薪排名,年薪排名
- $.ajax返回报错,请求ajax报错 返回readyState0
- ESP32-C3 学习测试 蓝牙 篇(五、添加 characteristic)
- 【python-opencv】灰度图和彩色图的互相转换
- 阿里云1+X-云计算开发与运维(单选题)
- wi-fi_Google语音正在测试Wi-Fi呼叫,无需呼叫转移
热门文章
- 苹果计算机怎么返回上一步操作,iPhone12如何返回上一步 iPhone12返回上一步及关闭程序方法...
- 不用电源的“电磁流量计”—超声波GPRS无线远传
- Flutter 基础目录结构介绍、入口自定义widget、等相关组件使用
- 2008年文兴小学图书室工作计划
- 【清风数学建模笔记】第一讲:层次分析法
- 马斯克收购 Twitter:把你们的代码都打印出来
- More Effective C++之类型转换
- 【论文研读】Self-supervised、unsupervised learning (2020最新论文)
- 结构体中含有指针如何初始化
- 魔兽(1.20E 1.24B 1.24E)作弊内存地址全公开