Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103113994
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-18 23:29:35

作者:styr  出处:Unix爱好者家园unix-cd.com  
平时需在系统中ping检查网络时,可能会记不牢了各点的IP(呵呵,咱就是),这时可调用本脚本做个简单的测试

PS:本脚本默认的IP地址配置文件为/usr/bin/ping.conf,可预先编辑维护,每行为2个字段:IP地址  节点名称(可有可无)

也可在调用脚本时通过参数调用各自的配置.

例:/usr/bin/ping.conf

192.168.0.1  网关

192.168.0.10 沙湾局

192.168.0.10 现业网点


 

ping.sh

[code]#!/bin/ksh
#ping 指定 IP 的脚本  V060302
#四川省乐山市沙湾区邮政局 宋涛
#ping.conf格式为每行为2个字段:目标IP地址  目标名称
#改进精简  V060405
ipfile=/usr/bin/ping.conf
iptmp=$HOME/iptmp.$$
iplog=$HOME/iplog.$$
trap " tput sgr0  rm -rf $iptmp $iplog  echo  exit " 0 1 2 3 15
tput bold
if [ $# -ne 0 ] 
then
[ $1 = "-h" ] && { printf '
   
                IP 测 试 脚 本
    
   该脚本作用是测试配置表中IP地址的联接情况
   
   命令行参数: $0 [ -h ] [ file ]
   
   其中: -h 为显示帮助,file为指定的配置文件
   如不指定则调用默认的配置表文件: /usr/bin/ping.conf
   配置表格式为每行以空格分隔的2个字段: 目标IP地址  目标名称
   第1列目标IP地址必须正确存在,第2列目标名称可有可无
   脚本中提示"请输入欲测试的序号"处,请选择输入表中列出的序号
   可一次输入多个序号,输入为 0 则测试表中列出的所有IP地址
   输入为 q 或 Q 则退出脚本
   
'  exit 0  } || ipfile=$1 
fi
[ -s $ipfile ] && { [ -r $ipfile ] || { echo "\n   $ipfile 配置文件不可读,请检查后再试\n"   exit 1  }  } \
|| { echo "\n   $ipfile 配置文件不存在或为空,请检查后再试\n"   exit 1  }
while :
do
clear
awk '$1~/^[0-9]/ {print NR,$1,$2}' $ipfile > $iptmp
printf "\n%45s\n\n" "IP 测 试 表"
printf "   %-6s%-15s%-16s  %-6s%-15s%-16s\n" "序号" "目标地址" "目标名称" "序号" "目标地址" "目标名称"
awk 'BEGIN{num=0} {if (num%2==0) {printf("\n   %-6s%-15s%-16s",$1,$2,$3)}
else {printf("   %-6s%-15s%-16s",$1,$2,$3)}
num+=1}' $iptmp
echo -n "\n\n   请输入欲测试的序号: "
read num
"$num" ] || { echo "\n   序号不能为空,请重新输入"  read  continue  }
"$num" == "q" -o "$num" == "Q" ] && exit 0
"$(echo $num |egrep "[^0-9 ]")" ] && { echo "\n   序号只能为整数,请重新输入"; read  continue  }
"$num" == "0" ] && num=$(awk '{print $1}' $iptmp)
for xh in $num
do
ip=$(sed -n "$xh"p $iptmp)
if [ "$ip" ] 
then
ping -c 1 $(echo $ip|cut -d" " -f2) > $iplog
[ $? -eq 0 ] && echo $ip | awk '{printf("\n   %-15s%-16s 测试正常\n",$2,$3)}' || \
{ echo $ip | awk '{printf("\n   %-15s%-16s 测试异常\n",$2,$3)}'  sed -n 4p $iplog  }
else 
echo "\n   $xh 配置表中无此序号"
fi
done
echo -n "\n\n   本次测试完成! q 键退出,否则任意键返回! "
read var
"$var" == "q" -o "$var" == "Q" ] && exit 0 
done
阅读(474) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~