天天看點

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的連接配接沒有問題。 

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 "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 

: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 pin 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 

call pin %1 | find "Reply">nul 

if %ERRORLEVEL%==0 goto arplist 

goto end 

:arplist 

arp -a |find "%1" 

然後用類似上一節的方法做一個子網ip位址循環腳本來調用arplist.bat。 

@rem arpall.bat Createdby Bankin 

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

本文轉自 蕭湘月 51CTO部落格,原文連結:http://blog.51cto.com/sniffer/24771,如需轉載請自行聯系原作者

繼續閱讀