Monthly Archives: December 2007

一个检测PING结果的脚本

公司用VPN连接到丹麦的服务器,由于某些非可抗特定原因,网络不是很稳定(只是到VPN服务器),基本情况是网通快但是偶尔会掉线,电信慢,但基本上能连通。但是,网通掉线后大概三五分钟后,又会自动恢复。
这样子,每次一掉线,我就要手动去切换线路,很是麻烦。于是想写了下面这个脚本来自动完成这个过程:

#!/bin/bash
while [ 1 ] ; do
        ping -v -c 10 192.168.2.1 > /dev/null 2>&1
        PINGSTA=$?

        if [ ! $PINGSTA -eq 0 ]; then
                ip route add 202.103.96.112 via 192.168.1.1
                /etc/init.d/openvpn restart
                sleep 300
        fi

        route |grep '202.103.96.112' > /dev/null 2>&1
        ROUSTA=$?
        if [ $ROUSTA -eq 0 ] ; then
                ip route del 202.103.96.112 via 192.168.1.1
                /etc/init.d/openvpn restart
                sleep 30
        fi
done

最近对脚本进行了更新,由原来的最能检测一个包改成了检测丢包率。

#!/bin/bash
NUM=`ping -q  -c 10 202.103.96.1|sed -ne 's/ *10 packets transmitted, \([0-9]\{1,2\}\) *received.*/\1/p'`
function iptables_check ()
{
        while /sbin/iptables -t nat -nL|grep DNAT|grep 'tcp dpt:25 to:8.8.8.8:25' > /dev/null 2>&1
        do
                /sbin/iptables -t nat -D PREROUTING -d 202.103.96.1 -p tcp --dport 25 -j DNAT --to-dest 8.8.8.8:25
        done

        while /sbin/iptables -t nat -nL|grep DNAT|grep 'tcp dpt:995 to:8.8.8.8:995' >/dev/null 2>&1
        do
                /sbin/iptables -t nat -D PREROUTING -d 202.103.96.1 -p tcp --dport 995  -j DNAT --to-dest 8.8.8.8:995
        done
}

iptables_check
[ $NUM -gt 8 ] && exit 0
/sbin/iptables -t nat -I PREROUTING -d 202.103.96.1 -p tcp --dport 25 -j DNAT --to-dest 8.8.8.8:25
/sbin/iptables -t nat -I PREROUTING -d 202.103.96.1 -p tcp --dport 995  -j DNAT --to-dest 8.8.8.8:995

BASH最常见的激活模式[转]

原文地址:http://www.linuxsir.org/bbs/showthread.php?threadid=97054

Bash最常见的激活模式是交互式和非交互式:
1.交互式激活
指其标准输入和输出都连接在终端上.又分为三种类型:login,非login,posix
以及受限的shell.
确定一个shell是否是交互式的可以通过检测$PS1环境变量.
(1) 当Bash作为login shell被激活时,它将依次读取并执行以下文件:
/etc/profile,~/.bash_profile,~/.bash_login,~/.profile
使用–noprofile选项激活Bash可以禁止其读任何初始化文件
在退出时执行 ~/.bash_logout 文件
(2) 当Bash作为非login shell被激活时,它将读取并执行~/.bashrc
使用–norc选项激活Bash可以禁止执行任何初始化文件,使用
–rcfile file可以指定执行的初始化文件.
(3) 当Bash作为posix模式被激活时,它将先检查$ENV变量是否定义.
若定义,Bash读取并执行有$ENV变量扩展而得到的文件,否则不再
执行任何初始化文件。
(4) 当Bash作为受限模式被激活时,它除了禁止某些操作以外,其他行为
于其他模式相同.受限操作有:改变目录,修改$SHELL和$PATH变量,
运行exec,以绝对路径运行程序以及使用重定向.Bash 1.x中不包含
受限模式.
2.非交互式激活

主要用来运行Shell脚本.启动后,Bash检查$BASH_ENV变量,若定义,
这执行该变量指定文件中包含的命令.
Bash 的激活选项

-c string 该选项表明string中包含了一条命令.如 bash -c ls ~
-i 使Bash以交互式方式运行
-r 使Bash以受限方式运行
–login 使Bash以登录Shell方式运行
–posix 使Bash遵循POSIX标准
–verbose 使Bash显示所有其读入的输入行
–help 打印Bash的使用信息
–version 打印版本信息
–noprofile
–norc
–rcfile file

变态vi问答[转]

原文地址:http://www.linuxsir.org/bbs/showthread.php?threadid=92383

有个文本文件内容如下:
new
newabc
news
newspaper
new new newspaper
new newsabc

BT问:如何把所有的new读换成old?
Read More »

在DELL 2900上安装Debian 4.0 (安装程序停住不动了)

等了一个多星期的机器今天终于来了,型号是DELL 2900,双路四核Xeon 5355 2.66G,16GB DDRII FBD内存,300GSAS硬盘。。。

简单的核对了个配置后,就开始安装系统了。一向偏爱Debian(这让我现在吃了个大亏),于是就想不想的拿起了 Debian4.的碟进行安装。

开始跟DELL的工程师通电话的时候,他们提醒 我说可能会找不到SAS盘驱动, 但是,我很幸运(其实是debian)很强强大,很顺利的找到了安装盘。

可没想到,到后来,安装进度条在“Retrieving file 8 of 8”这个提示下停止了,开始没当回事,就直接去吃饭了。可没想到,到吃完饭回来,还是停在这个地方不动。事情有点不对头了。。。。

按ctrl+alt+F4切换到第四个终端一看,上面显示这个

in-target: Writing extended state information...
in-target:

按ctrl+C,也终止不了,老是会重重出现。

google了一下原因,基本上是由于下面这个进程被挂起,而导致安装程序不能进行下一步操作

/usr/bin/perl -w /usr/sbin/dpkg-preconfigure --apt

这样子,我们就只要杀死这个进程,就能够继续我们的安装

#ps aux |grep pre

然后找到/usr/bin/perl -w /usr/sbin/dpkg-preconfigure –apt的pid号(我这里假设为4582),然后杀死他

#kill -9 4582

然后,让我们切回到终端1看看,可爱的安装程序是不是继续了~~~~~~~~~

呵呵

PS:
顺便说一句,有网友问到我dell 2900装RHEL或者windows时会报找不到硬盘,这个其实很好解决,在2900的随机光碟中,有一张白色的系统安装引导碟,在安装系统前,先把这个碟放到机器里面进行引导,然后按DELL的提示操作,很好解决的。

Read More »

从GRUB命令行启动Linux

GRUB(GRand Unified Bootloader)是现在Linux系统中最常 用的引导程序。以后都不大会用,今天算是铁了心想小弄清楚一下。

首先,正常启动到我的debian4.0,然后,就把/boot/grub/menu.lst移走,这里千万别把default 给移走了,否则,在debian4.0里,就直接报error 15,连grub命令行都进不去了。

然后,重启,很顺序就进行到了grub命令行了(呵呵,以前,我一看到这个就怕,今天却莫名有点兴奋)。

Read More »

奉献Red Hat Linux 033 实验翻译(KevinZ) [转]

###请转贴时保留以下内容######
Red Hat Linux 033 实验部分
应广大RH爱好者的要求,奉献Red Hat Linux 033 实验翻译
请提出宝贵意见Mail:kissingwolf@hotmail.com

KevinZ(kissingwolf)
2004.3.4
#############################
Red Hat Linux 033 实验部分

试验3
文件和目录操作
估计时间: 1小时30分钟
目标:           熟悉函数、语法和一些基本的文件和目录的控制操作。
练习有效地组合这些命令完成一般的用户任务
试验的起点: 安装了Red Hat Linux可运行系统 ,有一个无特权用户student,密码:student

Read More »

奉献Red Hat Linux 133 实验翻译(KevinZ)[转]

###请转贴时保留以下内容######
Red Hat Linux 133 实验部分
应广大RH爱好者的要求,奉献Red Hat Linux 133 实验翻译
请提出宝贵意见Mail:kissingwolf@hotmail.com

KevinZ(kissingwolf)
2004.1.4
#############################

Lab1 硬件和安装

步骤一:准备计算机
任务: 使用Red Hat Linux光盘启动系统
在启动时进入BIOS界面
设置系统启动顺序为A,CDROM,C
修改其他任何推荐的设置
保存并退出BIOS设置
Read More »

奉献Red Hat Linux 253 实验翻译(KevinZ) [转]

###请转贴时保留以下内容######
Red Hat Linux 253 实验部分
应广大RH爱好者的要求,奉献Red Hat Linux 253 实验翻译
请提出宝贵意见Mail:kissingwolf@hotmail.com
KevinZ(kissingwolf)
2004.3.24
#############################

Red Hat Linux 253 实验部分

试验2
域名系统
估计时间: 2个小时
目标: 安装和配置一个DNS服务器
试验的起点: 标准的Red Hat Linux安装

Read More »