shell脚本ping -w用法
2016-01-14 01:29
405 查看
今天写了一个循环ping的脚本用来扫描网段中一些不通的ip地址,代码如下:
#!/bin/bash
ping_info(){
ping -c 2 -w 1 $1;
if(($?!=0));
then echo $1 >> /tmp/iplist;
fi;
}
for i in `seq 129 254`;do
ip_dx=192.168.1.$i
ip_lt=192.168.2.$i
ip_yd=192.168.3.$i
ping_info $ip_dx
ping_info $ip_lt
ping_info $ip_yd
done
执行之后发现一个问题:无论地址能不能ping通,都写入到了/tmp/iplist中了,与脚本的初衷不符。
后将命令:ping -c 2 -w $1 单独拿出来运行分别用了一个通的ip和不通的ip做测试,发现echo $?的值都为1。
ping -c 2 -w 1 ip: -c 2的意思为ping两个包,-w 1的意思为等待时间为1秒(为了节约执行脚本的时间),问题就出在这个-w 1这里。根据环境的差别,ping的延时不通,ping两个包的时间也不通。我这里用time测试,ping两个包的时间大于1秒。所以如果指定超时时间为1秒的话,第二个包可能没有ping完就被结束了,所以echo $?结果为1。后将超时时间设置为3秒之后,脚本成功运行。
#!/bin/bashping_info(){ ping -c 2 -w 3 $1; if(($?!=0)); then echo $1 >> /tmp/iplist; fi;}for i in `seq 129 254`;do ip_dx=192.168.1.$i ip_lt=192.168.2.$i ip_yd=192.168.3.$i ping_info $ip_dx ping_info $ip_lt ping_info $ip_yddone
本文出自 “我很简单” 博客,请务必保留此出处http://easyyx.blog.51cto.com/8603153/1734825
#!/bin/bash
ping_info(){
ping -c 2 -w 1 $1;
if(($?!=0));
then echo $1 >> /tmp/iplist;
fi;
}
for i in `seq 129 254`;do
ip_dx=192.168.1.$i
ip_lt=192.168.2.$i
ip_yd=192.168.3.$i
ping_info $ip_dx
ping_info $ip_lt
ping_info $ip_yd
done
执行之后发现一个问题:无论地址能不能ping通,都写入到了/tmp/iplist中了,与脚本的初衷不符。
后将命令:ping -c 2 -w $1 单独拿出来运行分别用了一个通的ip和不通的ip做测试,发现echo $?的值都为1。
ping -c 2 -w 1 ip: -c 2的意思为ping两个包,-w 1的意思为等待时间为1秒(为了节约执行脚本的时间),问题就出在这个-w 1这里。根据环境的差别,ping的延时不通,ping两个包的时间也不通。我这里用time测试,ping两个包的时间大于1秒。所以如果指定超时时间为1秒的话,第二个包可能没有ping完就被结束了,所以echo $?结果为1。后将超时时间设置为3秒之后,脚本成功运行。
#!/bin/bashping_info(){ ping -c 2 -w 3 $1; if(($?!=0)); then echo $1 >> /tmp/iplist; fi;}for i in `seq 129 254`;do ip_dx=192.168.1.$i ip_lt=192.168.2.$i ip_yd=192.168.3.$i ping_info $ip_dx ping_info $ip_lt ping_info $ip_yddone
本文出自 “我很简单” 博客,请务必保留此出处http://easyyx.blog.51cto.com/8603153/1734825
相关文章推荐
- Shell脚本编程之判断语句
- shell脚本编程之循环语句
- shell脚本编程之数组
- shell split 字符串 三种方式和效率
- shell 参数列表
- 《Linux命令、编辑器与Shell编程》读书笔记12-函数和脚本
- linux shell 札记
- badusb_nc反弹shell
- Azure PowerShell 和 Visual Studio 不同版本下载安装
- linux shell学习笔记(一)——光标移动、输出、函数、循环
- jmeter beanshell内容
- &&在shell
- Centos6笔记 -- Bash
- bash大括号参数扩展(Parameter Expansion)
- shell-echo
- shell 循环
- sed使用实例
- Shell脚本运行hive语句 | hive以日期建立分区表 | linux schedule程序 | sed替换文件字符串 | shell推断hdfs文件文件夹是否存在
- Powershell 提权框架-Powerup
- XCode集成shell脚本