最近自己公司网站老出现掉包问题之前以为是网络问题或机房问题,经过N久的排查发现是linux网卡掉包了,下面我来分享我的解决办法。
 

之前公司的系统由于网卡问题,经常出现掉包(掉包排除攻击的 因素)或者突然挂掉,

严重影响服务的正常提供,因此想在出现此问题时自动解决。

思路:对网卡检测掉包情况,或者用ping检测,出现了,就重启哈网卡 。瞧是很简单吧!

代码如下:

 代码如下 复制代码
#安装帮助: mkdir  /cyc

#/cyc/renetwork.log为日志文件

 

#!/bin/bash

# 2013-2-17 @凹凸曼

# ping timeout  restart network

# lastmodtime 2013-3-19

pingNetwork(){

        local c=$1

        local pcount=$2

        local dst=192.168.0.143    #修改为你的交互机或者路由器ip

        if [[ ! $pcount =~ ^[0-9]+$ ]];then

                pcount=5

        fi

        loss=`ping -c $pcount  $dst|grep loss|awk '{print $6}'|cut -d% -f 1 `

        if [[ ! $loss =~ ^[0-9]+$ ]];then

                loss=100

        fi

 

        if [ $loss -gt 0 ]; then

                ifdown $c

                sleep 3

                ifup $c

                echo `date "+%Y%m%d %T"`": $pcount ping $loss% loss">>/cyc/renetwork.log

                sleep 30

        fi

 

}

 

#start dst eth

stopEth(){

        local c=$1

        local et=`service network status |tail -1|grep "$c"`

 

        if [ x"" == x"$et" ]; then

                ifup $c

                echo `date "+%Y%m%d %T"`":$c stop">>/cyc/renetwork.log

                sleep 30

        fi

}

#drop found

NetDrop(){

        local c=$1

        #$6 RX-DRP

        local redp=`netstat -i|grep "$c"|awk 'END{print $6}'`

        #$10 TX-DRP

        local txdp=`netstat -i|grep "$c"|awk 'END{print $10}'`

 

        if [ $redp -gt 0 ];then

                ifdown $c

                sleep 3

                ifup $c

                echo `date "+%Y%m%d %T"`":$c RX-DRP drop">>/cyc/renetwork.log

                sleep 30

        fi

 

        sleep 2

    if [ $txdp -gt 0 ];then

                ifdown $c

                sleep 3

                ifup $c

                echo `date "+%Y%m%d %T"`":$c TX-DRP drop">>/cyc/renetwork.log

                sleep 30

        fi

 

}

 

wtime=$2

eth=$1

if [[ ! $wtime =~ ^[0-9]+$ ]];then

  wtime=3

fi

if [ x"" == x"$eth" ];then

        echo "please enter the NIC name!"

        exit

fi

while [ 1 ]

        do

 

        stopEth $eth

        sleep $wtime

        NetDrop $eth

        sleep $wtime

        pingNetwork $eth 1

 

done

 

程序运行至目前的日志结果如下:

 代码如下 复制代码
20130319 12:23:01: eth0 1 ping 100% loss

20130319 13:43:50: eth0 1 ping 100% loss

20130319 18:11:18: eth0 1 ping 100% loss

20130323 08:04:59: eth0 1 ping 100% loss

20130323 14:41:04: eth0 1 ping 100% loss

20130324 12:49:04: eth0 1 ping 100% loss

20130327 13:15:47: eth0 1 ping 100% loss

20130401 11:17:42: eth0 1 ping 100% loss

20130402 09:02:14: eth0 1 ping 100% loss

20130403 08:49:30: eth0 1 ping 100% loss

20130404 20:21:46: eth0 1 ping 100% loss

20130407 18:44:57: eth0 1 ping 100% loss

20130408 10:46:53: eth0 1 ping 100% loss

20130408 14:41:06: eth0 1 ping 100% loss

20130408 14:47:24: eth0 1 ping 100% loss

20130408 15:23:02:eth0 RX-DRP drop

20130415 08:30:09: eth0 1 ping 100% loss

20130415 11:16:16: eth0 1 ping 100% loss

20130417 08:05:41: eth0 1 ping 100% loss

20130419 08:04:19: eth0 1 ping 100% loss

20130419 10:40:51: eth0 1 ping 100% loss

20130419 11:33:14: eth0 1 ping 100% loss

20130419 19:03:03: eth0 1 ping 100% loss

20130421 16:10:55: eth0 1 ping 100% loss

20130422 07:47:34: eth0 1 ping 100% loss

20130423 07:15:07: eth0 1 ping 100% loss

 

呵呵,自动解决了网卡掉包或挂掉的烦恼!您是不是很爽!

忘记了说鸟,此程序运行环境Red Hat Enterprise Linux Server release 5.4或者Centos6.3

其他linux环境估计问题不大,这里就不测试鸟!

linux网卡掉包或挂掉解决办法的更多相关文章

  1. linux中文显示乱码的解决办法

    linux中文显示乱码的解决办法 linux中文显示乱码是一件让人很头疼的事情. linux中文显示乱码的解决办法:[root@kk]#vi /etc/sysconfig/i18n将文件中的内容修改为 ...

  2. linux中tomcat内存溢出解决办法

    用命令 tail -f /root/apache-tomcat-6.0.20/logs/catalina.out(需要找到tomcat路径) 查看日志,查看是否有错误 linux中tomcat内存溢出 ...

  3. Linux忘记roo密码的解决办法

    Linux忘记root密码有三种解决办法: 下面详细介绍第一种: 重启系统后出现GRUB界面在引导装载程序菜单上,用上下方向键选择你忘记密码的那个系统键入“e” 来进入编辑模式.   接下来你可以看到 ...

  4. WPS for Linux 字体配置(字体缺失解决办法)

    WPS for Linux 字体配置(字体缺失解决办法) 1. 背景 有些linux装完wps后提示"部分字体无法显示"或"some formula symbols mi ...

  5. Windows本地Linux虚拟机ping不通的解决办法

    解决办法:启动虚拟机双网卡支持: 网卡1:Host-Only网络 网卡2:NAT网络 设置好以后,可以在Linux主机中ifconfig查看本地Host-Only的网络地址,与电脑中的地址应该是同一网 ...

  6. Hyper-V中的Linux无法配置网络地址的解决办法

    一周碰到2次在Hyper-V 2012中安装了Linux,也安装了IC 3.4.但是却无法配置IP地址的问题.因此造成很多不便,因此找机会把这个原因和解决办法进行了尝试. 这过程中感谢同事的提示,让我 ...

  7. Linux安装vim失败的解决办法

    最近想了解一下linux编程,于是linux系统下输入vim,发现竟然没有安装.好吧,那就安装吧.命令: sudo apt-get install vim 百度百科:apt-get是一条linux命令 ...

  8. ORA-19502: write error on file "", blockno (blocksize=)/linux下磁盘空间满了解决办法--Virtualbox

    今天,在测试环境启动数据库时,报错: SQL> startup; ORACLE instance started. Total System Global Area  285212672 byt ...

  9. Xshell4连接,Linux系统中文显示乱码解决办法

    Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET NetSarang Xshell 4 Build 0120议.使用 ...

随机推荐

  1. HAProxy+Keepalived+PXC负载均衡和高可用的PXC环境

    HAProxy介绍 反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服 ...

  2. SpringMVC的web.xml配置注意

    web.xml需要放过所有资源文件,这个就看自己的系统中有哪些静态文件.一般的都是.js..css..jpg..png.jpeg等等,但是我还用到一些字体文件资源,所以也要过滤,不然前台会找不到. & ...

  3. 如何让secureCRT显示Linux的颜色

    style="padding-bottom: 0px; line-height: 1.5; margin: 0px; padding-left: 0px; padding-right: 0p ...

  4. fdisk -l 找不到分区怎么办?想办法找到隐藏分区。

    centos6.6 装系统的时候,选取系统默认分区.装好后发现少了一大部分空间,通过fdisk -l 找不到分区,另外使用 parted -l 同样找不到消失的柱面. 如: [root@mysql]# ...

  5. Python之路第七天,基础(9)-面向对象(上)

    面向对象的编程思想 回想 我们所学过的编程方法: 面向过程:根据业务逻辑从上到下写堆叠代码. 函数式编程:将重复的代码封装到函数中,只需要写一遍,之后仅调用函数即可. 面向过程编程最易被初学者接受,其 ...

  6. lda模型的python实现

    LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,最近看了点资料,准备使用python实现一下.至于数学模型相关知识,某度一大堆,这里也给出之前参考过的一个挺详细 ...

  7. 博客终于开通了happy

    HelloWorld! 在我不懈的申请下,我的博客终于在第4次申请后成功开通了! 作为一个毕业两年的码农,现在才开始想要记录一些东西,似乎有点晚 -_-! 希望多年以后可以在这看到我长长的足迹!

  8. UI原则之-拼车

    1.简洁------------一目了然,简洁明了 2.易用------------操作方便 3.直观.快速-------快速定位到所需信息 4.友好-------网络延时.超时.等待 5.易懂--- ...

  9. 清理下NFC的基本概念

    移动支付这事情热了总归还是会回归理性,就如同之前的10几年间的几次轮回一样.字面上看,移动支付比支付大也不大可能,有相同,有扩展,有交集有不通才是. NFC这事情也是说了快十年了,真心希望它能回归到其 ...

  10. LINUX总结第13篇:LINUX下动态库及版本号控制

    感觉讲得挺详细 注: ln 命令用法 ln –s 源文件 目标文件 (目标文件即为软链接文件) 可用ls -l查看软链接文件具体指向哪个文件 目录[-] 1. File libhello.c 2. F ...