2009年11月3日 星期二

[轉貼]ping的用法及注冊碼解析

[轉貼]PING的用法
ping命令結合dos批處理能做很多事,對我等懶惰的系統管理員們尤其
有用。

一.基礎級:局域網ping命令用法

1.改變ping的基本設置
ping命令缺省要重複4次,等待時間也比較長,這用于廣域網比較合適,
在局域網判斷一個ip是否存在,一般只要ping 1次足夠,而且timeout時間
完全可以在100ms以內。

我在自己的PC上建立一個批處理pin.bat代替缺省的ping設置:

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

這命令比缺省的ping快很多,後面加%1等是為了接受命令行參數,這是為了
下面的擴展用法準備的。

2.單個網段內的懶人ping
如果你象我一樣懶,可以把自己局域網的網路號也寫死在批處理文件p.bat裡:

@rem p.bat Createdby Zheng Xiaohui
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 Zheng Xiaohui
@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 Zheng Xiaohui
@echo off
echo "Begin ----------------------------"
rem time












>pingtime.log
goto begin

2.中級:搜索當前網段內的所有活動ip

缺乏良好管理的網路(我們大多數人的實際環境),網管經常搞不清
有多少機器在運行,或者已經有多少個ip正在使用。
如何在5分鐘內拿到一個列表?只要一條dos命令即可:

@rem pingall.bat Createdby Zheng Xiaohui
@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 Zheng Xiaohui
@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 Zheng Xiaohui
@for /L %%A in (1,1,254) do arplist 192.168.1.%%A >> arpall.log
--------------------------------------------------------------------------------------------
完全搞懂登錄檔
windows理的六大機碼
HKEY_CLASS_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_CURRENT_CONFLG
HKEY_DYN_DATA
機碼下的三種數值
字串值
二進位值
DWORD值

1.HKEY_CLASS_ROOT機碼
HKEY_CLASS_ROOT這個機碼理,記載著許多副檔名的定義,也就是各種檔案的類型.
像是副檔名為.jpg的就被定義為影像檔,而且會記錄對應開啟的應用程式,這樣電腦才知道.jpg檔案要用何種程式開啟

2.HKEY_CURRENT_USER機碼
第二個是HKEY_CURRENT_USER這個機碼,是從HKEY_USERS延伸出來的,其中大多是使用者對作業系統的設定,例如桌面或開始功能表,也就是個人化作業環境設定的部分

3.第三個是HKEY_LOCAL_MACHINE,記載著電腦各種硬體設定的資料,例如各種周邊硬體的設定.BIOS的設定等等,因為使用者ㄉ硬體不同記載的資料也不同

4.HKEY_USERS機碼
第四個登錄機碼是HKEY_USERS,其中記載著各個不同使用者的資料.如果該電腦只有一個人使用.裡面的記錄就會跟HKEY_USER的記錄一樣

5.HKEY_CURRENT_CONFLG機碼
第五個登錄機碼是HKEY_CURRENT_CONFLG,其中記載著目前的系統設定

6.HKEY_DYN_DATA
第六個機碼是HKEY_DYN_DATA,這是一個記錄在記憶體裡面的資料,每次開機時,windows都會建立這個機碼的資料,儲存在記憶體理,一旦關機,此機碼就會消失。此機馬可說是用來監視電腦效能的,所以無法新增
再這六大機碼中,若要設定使用者個人化ㄉ設定,就要從HKEY_CURRENT_USER進去找子機碼修改,若要修改跟硬體相關的設定,就從HKEY_LOCAL_MACHINE進去找

7.字串值
用來儲存字串使用的,機碼中可儲存相當多的字串,有些你在螢幕上看到的字,可能就是儲存在字串中的字。當然也可以用字串來取代數字,包括整數,小數點,負數都可以,只不過在儲存數字,當成是再讀這些數值所需的轉譯過程會比較號十

8.二進位值
再二進位值裡面儲存的資料都是二進位數,用二進位編碼叫不容易被看出登錄的資要內容.你在登錄編輯器理看到後面有23 34 67 98 ..這樣的數字串,就是二進位值
二進位值可以儲存子串值,也可以儲存DWORD值

9.DWORD值
DWORD值可以用十進位也可以用十六進位來編輯,他在登錄檔理的樣子是0x00000010(16),括弧理事進位置的表示.

常見的DWORD值可用來設定顏色.cach等等,而且,不能儲存負數