中国网管论坛's Archiver

heart_dream_fly 发表于 2006-10-31 13:08

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

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 [url=http://www.163.com/][color=#0000ff]www.163.com[/color][/url] |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

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

~灰色衬衫~ 发表于 2006-10-31 13:59

受教了

iamshiyu 发表于 2006-10-31 14:03

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

heart_dream_fly 发表于 2006-10-31 14:06

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

fshlxy 发表于 2006-10-31 15:51

这个比较好

Fjcyz 发表于 2006-10-31 16:59

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

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

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

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

宿南 发表于 2006-11-1 16:43

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

heart_dream_fly 发表于 2006-11-1 17:11

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

odobo 发表于 2006-11-1 21:56

受了,收益非浅,多谢

odobo 发表于 2006-11-1 22:02

怕错别字误倒到大伙

改正一下

成语叫:受益匪浅

cuimartin 发表于 2006-11-6 08:36

[quote]原帖由 [i]heart_dream_fly[/i] 于 2006-11-1 17:11 发表
批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件
其扩展名为BAT
这些命令统称批处理命令
保存后双击运行就可以了 [/quote]
~~~强烈支持楼主想法~~~认同~~~~:D

自由风 发表于 2006-11-6 13:19

呵,不知道楼主在哪里学的这么强的东西?
是不是偶的教程让你这么强?

bj23932393 发表于 2006-11-8 21:12

辛苦了

3852999 发表于 2006-11-9 12:05

顶一下

hbjadmin 发表于 2007-1-20 19:21

支持下,学习学习

hyq0319 发表于 2007-1-21 14:13

平常也经常用到ping

可没想到还能这样用

感谢~~~~~

qiuyunchuan 发表于 2007-1-21 16:42

好东西,学习了

怕瓦落地 发表于 2007-1-21 19:47

懒的进步,做计算机行业,如果想技术进步更快,个人认为就是要先懒,把计算机能做的事情,全部让他自己去做.

cvbnzxc 发表于 2007-1-22 10:11

学批处理 好学吗?

baby5430 发表于 2007-1-27 20:25


这么厉害啊!!
学习!!

页: [1] 2 3 4 5 6

Powered by Discuz! Archiver 6.1.0  © 1999-2008 bbs.bitsCN.com