LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1062|回复: 12

谁能写个脚本,目的实现象cisco路由中那样的执行结果

[复制链接]
发表于 2004-5-25 13:04:03 | 显示全部楼层 |阅读模式
谁能写个脚本,目的实现象cisco路由中那样的执行结果,比如象这样:
ping
[proct  tcp]
[ip] 202.96.65.66  
[count 5] 30


!!!!...!!!!!!!!..!!!.!!!!...!!  
pacek 30 receivd 67% lost 33%

能象上面那样显示吗?那样的话一目了然。最好在ping的时候对丢包能报警。
发表于 2004-5-25 14:05:03 | 显示全部楼层
对路由器的命令行没接触过~ :sorry
 楼主| 发表于 2004-5-25 14:21:05 | 显示全部楼层
我接触过一些,但我的目的只是要ping的结果显示为!!!!...!!的形式,其中!就表示通,而.就表示不通也就是丢包,就相通于在ping的时候的TTL 和timeout的形式,因为有时我们只要看一下通不通就可以了,而原始的的方式整个一行太难看了。

比如我要对一个地址ping3000个包,但原来的形式不太形象而换用!!!..!!....!!!这样的输出效果就便于查看了,光看最后的结果什么百分号了什么参数了不形象,这样形象些。
发表于 2004-5-25 14:36:11 | 显示全部楼层
  1. #!/bin/ksh
  2. n=1
  3. while ((n<=$2));do
  4.         ping -c1 -s 1024 $1 >/dev/null
  5.         case $? in
  6.         0)      echo -n "!";;
  7.         *)      echo -n ".";;
  8.         esac
  9.         sleep 1
  10.         ((n+=1))
  11. done
  12. echo
复制代码

效果:
/home/lee#ksh p www.sina.com 10
!!!!!!!!!
是这样的吗?
 楼主| 发表于 2004-5-25 14:51:51 | 显示全部楼层
你这个一般的bash可以吗?

有点象你所写的那样,比如
C:\Documents and Settings\user>ping 127.0.0.1

Pinging 127.0.0.1 with 32 bytes of data:

Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
request timeout
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
request timeout
request timeout
Ping statistics for 127.0.0.1:
    Packets: Sent = 6, Received = 6, Lost = 50 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
Control-C
^C
C:\Documents and Settings\user>
相应的
[root gnu backup] ping 127.0.0.1
!!.!..
Ping statistics for 127.0.0.1:
    Packets: Sent = 6, Received = 6, Lost = 50 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
Control-C
发表于 2004-5-25 14:58:14 | 显示全部楼层
那用loss来判断一下吧~?
ps:用bash也可!
 楼主| 发表于 2004-5-25 15:12:31 | 显示全部楼层
我对脚本不太懂,但知道这个可以实现,请问上面的那些用你说的loss如何判断?难道ping一个东西之后他会有loss的变量吗?在bash下ping的时候他默认是通了就有回应,不通的话他就没有回应,只是那些显示数值向后跳一下。
发表于 2004-5-25 15:23:27 | 显示全部楼层
最初由 gao_linfeng 发表
我对脚本不太懂,但知道这个可以实现,请问上面的那些用你说的loss如何判断?难道ping一个东西之后他会有loss的变量吗?在bash下ping的时候他默认是通了就有回应,不通的话他就没有回应,只是那些显示数值向后跳一下。

我是根据ping通过的返回状态来判断的
/home/lee#ping -c1 www.sina.com
PING libra.sina.com.cn (61.135.153.181) 56(84) bytes of data.
64 bytes from 61.135.153.181: icmp_seq=1 ttl=57 time=92.9 ms

--- libra.sina.com.cn ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 92.906/92.906/92.906/0.000 ms
/home/lee#echo $?
0
/home/lee#ping -c1 www.sina.comd
ping: unknown host www.sina.comd
/home/lee#echo $?
2
/home/lee#ping -c1 www.linuxsir.cn
PING www.linuxsir.cn (211.93.98.22) 56(84) bytes of data.

--- www.linuxsir.cn ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

/home/lee#echo $?
1

  1. /home/lee#cat pp
  2. #!/bin/ksh
  3. for ip in $@;do
  4. echo -n "pinging:$ip ......"
  5. ping -c1 $ip >/dev/null 2>&1
  6. case $? in
  7. 0)      echo "pass";;
  8. *)      echo "false";;
  9. esac
  10. done
复制代码

结果:
/home/lee#ksh pp www.linuxsir.cn www.sina.com www.163.com 127.0.0.1
pinging:www.linuxsir.cn ......false
pinging:www.sina.com ......pass
pinging:www.163.com ......pass
pinging:127.0.0.1 ......pass
 楼主| 发表于 2004-5-25 15:23:48 | 显示全部楼层
在bash下,ping的时候默认他只对ping通的包输出屏幕,不通的包不与输出,所以在屏幕上只有通过按ctrl+c的方法才能看出结果,而一般在屏幕上他都是通的包,根本不形象的,这一点连windows都不如。
发表于 2004-5-25 16:45:36 | 显示全部楼层
谁说linux下的ping不显示丢失的包?。。。边ping边显示结果的阿。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表