发新话题
打印

[推荐] Ping高级用法:懒网管们的福音

本主题由 海盗 于 2007-10-16 11:26 移动

Ping高级用法:懒网管们的福音

本文网址:http://bbs.bitscn.com/64567 复制

ping命令结合dos批处理能做很多事,对我等懒惰的系统管理员们尤其有用。

一.基础级:局域网ping命令用法

1.改变ping的基本设置
ping命令缺省要重复4次,等待时间也比较长,这用于广域网比较合适,
在局域网判断一个ip是否存在,一般只要ping 1次足够,而且timeout时间
完全可以在100ms以内。

我在自己的PC上建立一个批处理pin.bat代替缺省的ping设置:

@rem pin.bat Createdby Bankin
@ping -n 1 -l 16 -w 100 %1 %2 %3 %4 %5

这命令比缺省的ping快很多,后面加%1等是为了接受命令行参数,这是为了
下面的扩展用法准备的。

2.单个网段内的懒人ping
如果你象我一样懒,可以把自己局域网的网络号也写死在批处理文件p.bat里:

@rem p.bat Createdby Bankin
call pin 192.168.1.%1 %2 %3 %4 %5

比如你的mail服务器是192.168.1.2,那么只要输 p 2 即可。
如果你有多个网段,可以在dos环境变量里设一下子网号。

3.游戏玩家的终极懒人ping

如果你的internet 网络连接需要经常检查,可以做一个批处理文件,再把它的
快捷方式放在桌面上,定义一个快捷键。这样你在做任何工作时,随时可以看
一下网络是否通,只要敲一个组合键,而不是要打开dos窗口,输好几条命令,
再关掉此窗口。(当你打网络游戏中突然网络断掉,这时候你需要最快速度确定
网关是否能ping到)

这里要用一个技巧,就是dos命令返回值 %ERRORLEVEL%,当dos命令执行成功时,一般来说环境变量%ERRORLEVEL%会赋值0,失败则为1,我们利用这个方法,让脚本自己逐级查找网络连接问题。

@rem pinggw.bat Createdby Bankin
@echo off

ping -n 1 192.168.1.1 |find "Reply"
rem 如果这一步成功说明到本地网关的连接没有问题。
if %ERRORLEVEL%==1 goto end

ping -n 1 202.96.199.133 |find "Reply"
rem 这是上海电信局的DNS,如果这一步成功说明到本地ISP的连接没有问题。
if %ERRORLEVEL%==1 goto end

ping -n 1 www.163.com |find "Reply"
rem 如果这一步成功说明本地ISP和internet连接没有问题,而且DNS没有问题。

:end
rem pause
sleep 2
exit

sleep 2 停下2秒钟让你看清楚,然后自己exit退出,不要麻烦你关窗口。
注意:sleep是windows2000 资源包的扩展命令,如果没有装就用pause代替吧。

二. 网络管理员常用ping命令技巧
1.入门级:网络连接监视日志
我在一个项目里碰到交换机连接不稳定的情况,每天会随机中断几分钟,
为了捕捉这个问题,做一个带时间显示的批处理文件pingtime.bat:

@rem pingtime.bat Createdby Bankin
@echo off
echo "Begin ----------------------------"
rem time <cr.txt |find "current"
time /t
pin %1 %2 %3 %4 %5 | find "Reply"
rem sleep 10

其中显示时间命令有两个版本,在windows2000上用time/t 命令即可,
在win98上,要在当前目录下创建只有一个空回车的cr.txt文件。

然后再做一个批处理文件来循环调用pingtime.bat并写入日志:

@rem pinglog.bat Createdby Bankin
@echo off
:begin
call pingtime 192.168.1.1>>pingtime.log
goto begin

2.中级:搜索当前网段内的所有活动ip

缺乏良好管理的网络(我们大多数人的实际环境),网管经常搞不清
有多少机器在运行,或者已经有多少个ip正在使用。
如何在5分钟内拿到一个列表?只要一条dos命令即可:

@rem pingall.bat Createdby Bankin
@for /L %%A in (1,1,254) do ping 192.168.1.%%A |find "Reply">> pingall.log

顺便说一句,windows2000的dos命令做了很多扩展,虽然比unix shell还差
很多,可是已经能做一些复杂的脚本,而且在网络方面还有netsh命令集,值得好好研究。

3.变态用法:搜索当前网段内所有的ip地址/mac对照表

首先我们做一个批处理,ping 1个ip地址,如果有reply,就调用arp -a命令,查看当前arp缓存里的ip-mac列表,并且再用dos筛选命令find找出当前目标ip地址。

@rem arplist.bat Createdby Bankin
@echo off
call pin %1 | find "Reply">nul
if %ERRORLEVEL%==0 goto arplist
goto end
:arplist
arp -a |find "%1"
:end

然后用类似上一节的方法做一个子网ip地址循环脚本来调用arplist.bat。

@rem arpall.bat Createdby Bankin
@for /L %%A in (1,1,254) do arplist 192.168.1.%%A >> arpall.log

[ 本帖最后由 螺丝刀的日子 于 2007-4-5 15:40 编辑 ]

不抛弃也不放弃,所以我们就叫钢七连

TOP

受教了

TOP

这个也不错,看来lz兄弟最近在批处理上有心得?:)

七夕银河
一个不想当将军的裁缝,绝不是一个好司机!

TOP

呵呵,最近接触这东西比较频繁
批处理,说白了就是DOS操作
有人认为DOS操作过时了、落后了
其实不然
DOS操作最大的好处就在于快、不留痕
我觉得在许多时候Windows操作是根本解决不了问题的
必须借助DOS操作

不抛弃也不放弃,所以我们就叫钢七连

TOP

这个比较好

TOP

受教,这个的确不错.....

但是如果用这个批处理来搜索活动的计算机和MAC地址.....速度显然慢了许多.

而用一些局域网工具一下就出来了.

支持自已动手做出来的东东........还是少用工具好.

TOP

怎么做批处理文件啊,你写的那些代码写那啊? 写在txt里面吗,在把后坠改成bat吗。?
然后怎么用啊?
我很菜!

TOP

批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件
其扩展名为BAT
这些命令统称批处理命令
保存后双击运行就可以了

不抛弃也不放弃,所以我们就叫钢七连

TOP

受了,收益非浅,多谢

学一些知识,交一些朋友,帮一些兄弟,做一些实事!
上海IT MSN群:groupit@hotmail.com

TOP

怕错别字误倒到大伙

改正一下

成语叫:受益匪浅

学一些知识,交一些朋友,帮一些兄弟,做一些实事!
上海IT MSN群:groupit@hotmail.com

TOP

发新话题
版块跳转 
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论! 24小时违法信息处理:QQ58284700 TEL29989777
沪ICP备05002360号 / 增值电信业务经营许可证沪B2-20050290 / 当前时区 GMT+8, 现在时间是 2008-5-17 00:40 /