利用脚本编程格式化输出转存系统日志(转)

利用脚本编程格式化输出转存系统日志(转)[@more@]

  日志对于操作系统来说其重要性时不言而喻的,一个优秀的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,存储位置为\dataackup,文件名为 "计算机名+日期+日志类型".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=0

  var ws=WScript.CreateObject("WScript.shell")

  c=ws.expandenvironmentstrings("%computername%")

  netdrive="\dateackup"  

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=1

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

  fHeader+=""

  fHeader+="

daily"

  fHeader+=logarray[l]

  fHeader+=" log report for "

  fHeader+=c

  fHeader+=""

  fHeader+="

"

  fHeader+=theData(today)

fHeader+=""

  fHeader+="
"

f.Write(fHeader)

  f.Write(fContents)  

fFooter="

"  

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 "pathlogreport.js"

  此处server为logreort.js所在的机器,本机可省略。

  path为logreport.js所在的路径,默认的为%systemroot%

  


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8403220/viewspace-948254/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8403220/viewspace-948254/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值