close

當 User 登入網域時,透過群組管理物件(GPO)則可以達到想要
執行的工作,這次的筆記重點在 DOS Batch File 的注意事項,
以下內容為簡單的範例。老實說..Batch File 真的很難用。= ='..


以下範例當某個群組的使用者,登入網域時,將會自動執行 Server
上的 Batch Scripts,偵測網路磁碟連線是否正常,因為 Windows
Samba 的連線若超過 15分鐘無任何動作,會將網路磁碟中斷,
確保算圖不會因網路磁碟斷線,導致有算黑圖的情形。


【 環境說明 】

作業系統:Windows Server 2003

Batch File 路徑:\\ad\SYSVOL\abc.com.tw\scripts\


【 Batch File 】

CLS
@echo off
::NetDrive Tool v0.1 By Paul
::20100203 Change Network Test & ReMount TimeOut

SET Netip=192.168.1.10

SET Hd=H
SET Xd=X

::Network Test

ping -n 3 %Netip% | find "Reply"
IF %ERRORLEVEL%==1 GOTO Netclose

GOTO Checkdriver

exit


:Checkdriver

ping -n 87 127.0.0.1

If not exist %Hd%: set /a CK+=1 && net use %Hd%: \\ASer\Render | echo %date%-%time% %Hd% NetDrive ReMount >> \\%Netip%\MountLog\%computername%.txt
If not exist %Xd%: set /a CK+=1 && net use %Xd%: \\BSer\db | echo %date%-%time% %Xd% NetDrive ReMount >> \\%Netip%\MountLog\%computername%.txt

ping -n 210 127.0.0.1

If %CK% GEQ 18 GOTO CHclose

set /a CKSum+=1
If %CKSum% GEQ 19 set CK=0 && CKSum=0

GOTO Checkdriver

:Netclose
echo Mountsys %date%-%time% Network Test Error >> C:\time.log
exit

:CHclose
ping -n 3 %Netip% | find "Reply"
IF %ERRORLEVEL%==1 GOTO Netclose

echo Mountsys %date%-%time% ReMount TimeOut >> \\%Netip%\MountLog\%computername%.txt
exit




【 註解說明 】

※ 若將 Batch File 放置在 Server 端 ( \\ad\SYSVOL\abc.com.tw\scripts\ )
 scripts 會系統背景執行,無視窗可查看,記得程式內要加上
 儲存 Log 的功能,避免程式出錯找不到原因。

※ Batch 的註解為「::」,與文字間不得有空白,否則會無法正確執行該程式。
 正確寫法為 - 「::Test Tool」,即使在 Local 端執行該批次
 檔無出現問題,但實測後發現,若「::」空一個接著描述,程式將會自動中斷。

※ 若有兩個註解,註解與註解間也不得有空白。

※ 使用 IF 的語法,計算式盡量不要放置後方執行,會產生 Set /a 失效。

※ 「&&」與「|」的用法要特別注意,「&&」為邏輯用。

※ 若要用「wait」指令,要記得將 wait.exe Copy 至 「%windir%/system32」。

※ GEQ:判斷式,等於或大於,可查詢 help。


【 程式約略說明 】

1) 測試網路是否可以正常 ping 到 AD IP,若失敗結束程式,儲存 Log。

2) 程式五分鐘偵測一次,網路磁碟是否斷線。( Ping Local IP = wait 的功能 )

3) 若重複掛載次數超過 18次,網路有通將含機器名稱的 Log 丟到 AD 目錄,
  網路不通紀錄在本機硬碟。避免在網路斷線時,程式重複執行。

4) 當整個 Loop 執行超過 19次,且重複掛載未超過 18次,則將兩個數值歸零,
  避免超出計算次數,程式自動關閉。


【 延伸閱讀 】

       Microsoft DOS if command
       Microsoft DOS set command
       Set 命令設定文件


以上資料居然花了兩三天才搞懂,本來想用 For 迴圈,但苦於
batch 在程式判別上太難用,直到今天才發現,原來..Windows
Server 也支援 .vbs 的檔案,知道的時候,實在很想吐血。Orz...

甘苦筆記..完搞!


                          Paul


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 paul 的頭像
    paul

    Paul's Blog

    paul 發表在 痞客邦 留言(0) 人氣()