[DOS]比對檔案是否異動
紀錄一下處理過程
問題描述
正式環境的程式碼必須要有控管機制,防止程式員透過非正常程序(換版流程)去偷改。
解決方式
1. 統一換版時間。
2. 在非換版時間如果程式有異動,表示有人去動程式。
3. 寫排程去監控production的檔案狀態是否異動,在非換版時間如果程式有異動發Email通知系統管理員。
監控production的檔案狀態(檢查檔案是否異動.bat)
@title 檢查檔案是否異動
rem iniPath:檔案資較夾的位置
set iniPath=H:\開發區\2010Projects\TestMSBuild\
rem CompileLog:比較結果位置
set CompileLog=H:\CompileLog\
rem 開始比對檔案是否異動
if not exist %CompileLog%Before.txt goto nofile
dir %iniPath% /s>%CompileLog%After.txt
fc %CompileLog%Before.txt %CompileLog%After.txt>%CompileLog%Result.txt
if errorlevel 2 goto errFileLost
if errorlevel 1 goto errDiffer
if errorlevel 0 goto errSame
rem 檢查比對結果是否異動
:errSame
echo. is same
goto displayresult
:errDiffer
echo. is different
rem 寄送比對結果
cscript mail.vbs
goto displayresult
:errFileLost
echo. file is lost
goto displayresult
:displayresult
dir %iniPath% /s>%CompileLog%Before.txt
if errorlevel 1 (
echo 比對檔案失敗
) ELSE (
echo 比對檔案完成
)
exit
:nofile
dir %iniPath% /s>%CompileLog%Before.txt
dir %iniPath% /s>%CompileLog%After.txt
@echo on
寄送通知信件(mail.vbs)(郵件主機允許匿名存取)
strSMTP = "testmailserver.com.tw"
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "test@com.tw"
objEmail.To = "123456@com.tw"
objEmail.Subject = "[檢查正式環境異動]有檔案變更"
objEmail.Textbody = "檢查結果請參照附檔"
objEmail.Addattachment strLogFile
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
測試結果
有人真的去偷改程式了
參考資料