萬盛學電腦網

 萬盛學電腦網 >> 健康知識 >> 利用腳本編程格式化輸出轉存系統日志

利用腳本編程格式化輸出轉存系統日志

  日志對於操作系統來說其重要性時不言而喻的,一個優秀的nt網絡的管理員,,往往會定期的備份系統日志,以備查詢服務器運行狀況及系統安全狀況。如果利用系統日志的“另存為”功能手工備份,則比較麻煩,而且輸出的日志難以實現格式化輸出,微軟的resource kit工具包中有一個免費的查看本地或遠程日志的小工具dumpel.exe,利用它可以把日志存為文本文件以備後需,在這裡我利用windows腳本編程來實現定期備份並格式化輸出html文件,如果條件許可,可以直接轉儲到打印機上打印。下面是具體的實現方法。windows腳本編程包括vbscript和javascript,這也是網頁特效編程中常見的語言,實際上利用vbs和js強大的系統和網絡管理功能,可以使系統管理員簡化很多工作的。

vbs和js本身不提供察看日志的方法,但wscript.shell具有run方法,即可以運行windows命令,所以我們要借助上面說的dumpel工具,首先說一下它的使用方法,

dumpel -f file [-s \\\\server] [-l log [-m source]] [-e n1 n2 n3...] [-r] [-t] [-d x]常用的參數:-f file 即為日志的存儲位置和文件名-s server 在查看遠程日志時使用(必須有admin權限)-m 過濾日志條件-l 指定日志,如系統日志(system),應用程序(application),安全日志(security),域控制器還有dns,文件復制等

例如,要把server01上安全日志保存為security.log,命令:dumpel -f security.log -s \\\\server01 -l security然後即產生一個security.log的文本文檔,為了得到格式化輸出的日志文件,我們采取下面的編程方法:

假設我們要查看日志的服務器為\\\\server, 存儲位置為\\\\data\\backup,文件名為 "計算機名 日期 日志類型".html並通過計劃任務,一天產生一個html文檔,原代碼如下:

logreport.js

month=new Array(12)month[1]="一月"month[2]="二月"month[3]="三月"month[4]="四月"month[5]="五月"month[6]="六月"month[7]="七月"month[8]="八月"month[9]="九月"month[10]="十月"month[11]="十一月"month[12]="十二月"

days=new Array(7)days[1]="星期日"days[2]="星期一"days[3]="星期二"days[4]="星期三"days[5]="星期四"days[6]="星期五"days[7]="星期六"function theData(aDate){var currentday=days[aDate.getDay() 1]var currentmonth=month[aDate.getMonth() 1]return currentday "," currentmonth "," aDate.getDate()}var result;result=0var ws=WScript.CreateObject("WScript.shell")c=ws.expandenvironmentstrings("%computername%")netdrive="\\\\date\\backup"

today=new Date()var logday=today.getDate()var logmonth=today.getMonth()

logarray=new Array(2)logarray[0]="system"logarray[1]="application"logarray[2]="security"for (l in logarray) {ws.run("dumpel.exe /s \\\\server /l " logarray[l] " /f " netdrive "\\\\" c "-" logmonth "-" logday() "-" logarray[l] ".log /d 1",0,"TRUE")}ForReading=1ForAppending=8

for (l in logarray) {

var fs=new ActiveXObject("scripting.FileSystemObject")var f=fs.opentextfile("" netdrive "\\\\" c "-" logmonth "-" logday() "-" logarray[l] ".log",ForReading,"TRUE")fContents=f.ReadAll()f.Close()

var f=fs.OpenTextFile("" netdrive "\\\\" c "-" logmonth "-" logday() "-" logarray[l] ".htm",ForAppending,"TRUE")fHeader="<html><head><title>Daily "fHeader =logarray[l]fHeader =cfHeader ="</title></head>"fHeader ="<body bgcolor=#ffffff text=#000000>"fHeader ="<h1>daily"fHeader =logarray[l]fHeader =" log report for "fHeader =cfHeader ="</h1>"fHeader ="<h3>"

fHeader =theData(today)

fHeader ="</h3>"fHeader ="<pre>"

f.Write(fHeader)f.Write(fContents)

fFooter="</pre></body></html>"

fWrite(fFooter)f.Close()}

將以上代碼用記事本打開,並把後綴名存為js,並與dumpel.exe放在同一目錄下,雙擊即可運行,運行後自動建立"計算機名 日期 日志類型".html

要使此腳本程序定期的進行日志備份,可以利用windows圖形化的計劃任務或是“at"命令。

利用圖形化的計劃任務使腳本自動執行非常簡單,這裡不再詳細介紹,用at命令同樣可以達到目的。例如需要在每天的0:00執行此腳本來備份系統日志,則在命令提示行下輸入at \\\\server /every M,T,W,Th,F,S,Su 0:00 "path\\logreport.js"此處server為logreort.js所在的機器,本機可省略。path為logreport.js所在的路徑,默認的為%systemroot%

copyright © 萬盛學電腦網 all rights reserved