IIS6 日志删除脚本(t00ls)

发个很早前自己写的iis6的删除日志的vbs脚本
写这个东西的原因是网上的删除iis日志工具要么报毒(懒得做免杀),要么太暴力(直接关掉IIS服务再将日志文件整个删除,坑爹呢!?) 
后来找了下资料发现其实要删除iis6的日志没必要把iis服务停掉,只需要把日志记录的选项关掉就行了
在参考了Adsutil.vbs里面的部分代码后写了个vbs,专门用来删除iis6的日志,不用停掉iis的服务,删除时使用正则表达式匹配关键字,而且删除后再将日志文件修改时间改回原来的时间



第一条列出当前IIS上面站点的详细信息:站点ID号,站点物理路径,站点的日志路径
第二条命令和第三条命令是暂停和开启指定站点的日志记录的,一般用不到。第四条命令里面已经包含这两条命令
第四条是指定站点ID号,要删除的日志文件绝对路径,要删除的日志的关键字(这里关键字使用正则表达式匹配)
一般使用第一条和第四条命令结合即可


要删除IP地址是172.16.1.5在12年12月12号的访问记录:



具体代码如下:

001If WScript.Arguments.Count < 1 Then
002        Usage()
003        WScript.Quit(1)
004End If
005 
006Select Case UCase(WScript.Arguments.Item(0))
007        Case "LIST"
008                Call ListWeb()
009        Case "STOPLOG"
010                Call SetLog(WScript.Arguments.Item(1),0) '0 stop log
011        Case "STARTLOG"
012                Call SetLog(WScript.Arguments.Item(1),1) '1 start log
013        Case "DELLOG"
014                Call DelLog(WScript.Arguments.Item(1),WScript.Arguments.Item(2),WScript.Arguments.Item(3))
015        Case Else
016                Call Usage()
017End Select
018 
019Sub Usage()
020        WScript.Echo "IIS 6 Log Deleter   By. Twi1ight" & vbCrLf
021        WScript.Echo "Usage:" & vbTab & _
022                WScript.ScriptName & " LIST" & vbCrLf & vbTab & _
023                WScript.ScriptName & " STARTLOG SiteID" & vbCrLf & vbTab & _
024                WScript.ScriptName & " STOPLOG  SiteID" & vbCrLf & vbTab & _
025                WScript.ScriptName & " DELLOG   SiteID  LogFile  KeyString" & vbCrLf & "  " & _
026                "LIST" & vbTab & vbTab & "List all websites info" & vbCrLf & "  " & _
027                "STARTLOG" & vbTab & "Start IIS Logging on SiteID" & vbCrLf & "  " & _
028                "STOPLOG" & vbTab & "Stop IIS Logging on SiteID" & vbCrLf & "  " & _
029                "DELLOG" & vbTab & "Automatical stop/start IIS log and delete log items which contains KeyString, KeyString is a Regular String"
030 
031End Sub
032 
033Sub CheckID(ID)
034        If Not IsNumeric(ID) Then
035                WScript.Echo "[-] The site ID specified is not Numeric"
036                WScript.Quit(1)
037        End If
038End Sub
039 
040Sub ListWeb()
041        Set ObjService=GetObject("IIS://LocalHost/W3SVC")
042        For Each obj3w In objservice
043                If IsNumeric(obj3w.Name) Then
044                        sServerName=Obj3w.ServerComment
045                        Set webSite = GetObject("IIS://Localhost/W3SVC/" & obj3w.Name & "/Root")
046                        ListAllWeb = ListAllWeb & obj3w.Name & _
047                                                String(Abs(25-Len(obj3w.Name))," ") & _
048                                                obj3w.ServerComment & "(" & webSite.Path & ")" & vbCrLf
049                        Set objLog = GetObject("IIS://Localhost/W3SVC/" & obj3w.Name)
050                        ListAllWeb = ListAllWeb & String(25," ") & _
051                                                "Log: " & objLog.LogFileDirectory & "\W3SVC" & obj3w.Name &vbCrLf
052                End If
053        Next
054        WScript.Echo ListAllWeb
055        Set ObjService=Nothing
056End Sub
057 
058Sub SetLog(ID, value)
059        CheckID(ID)
060        str = "Start"
061        If value = 0 Then
062                str = "Stop"
063        End If
064        Set objSite = GetObject("IIS://localhost/W3SVC/" & ID)
065        objSite.Put "LogType",value
066        objSite.SetInfo
067    If (Err.Number <> 0) Then
068                Err.Clear
069        WScript.Echo "[-] Error Trying To " & str & " IIS Logging!"
070        Else
071                WScript.Echo str & " IIS Logging Success!"
072    End If
073     
074End Sub
075 
076Sub DelLog(ID, LogFile, KeyString)
077        On Error Resume Next
078        Const ForReading = 1, ForWriting = 2, ForAppending = 8
079        'WScript.Echo "Delete Log File"
080        'Stop Log
081        Call SetLog(ID, 0)
082        WScript.Sleep 500 'wait iis to stop log otherwise will raise an exception if rewrite logfile immediately
083        Set regEx = New RegExp
084        regEx.Pattern = KeyString
085        regEx.IgnoreCase = True
086         
087        Set fso = CreateObject("Scripting.FileSystemObject")
088        'Save Last Modify Time
089        Set f = fso.GetFile(LogFile)
090        modifyDate = f.DateLastModified
091        'WScript.Echo f.DateCreated & " " & f.DateLastAccessed & " " & f.DateLastModified
092         
093        LogPath = fso.GetParentFolderName(LogFile)
094        LogName = fso.GetFileName(LogFile)
095        TempFile = fso.GetTempName
096        SrcFile = LogPath & "\" & TempFile
097 
098        'WScript.Echo TempFile
099        Call fso.CopyFile(LogFile, SrcFile)
100        Set srcLog = fso.OpenTextFile(SrcFile, ForReading, False)
101        Set dstLog = fso.OpenTextFile(LogFile, ForWriting, False)
102        Do While srcLog.AtEndOfLine <> True
103                line = srcLog.ReadLine
104                Set Martches = regEx.Execute(line)
105                If Martches.Count <> 0 Then
106                        WScript.Echo " "& line 'comment out this line if don't like to display deleted log item
107                Else
108                        dstLog.WriteLine(line)
109                End If
110        Loop
111        srcLog.Close
112        dstLog.Close
113        fso.DeleteFile(SrcFile)
114        'Change Last Modify Time
115        Set objShell = CreateObject("Shell.Application")
116        Set objFolder = objShell.NameSpace(LogPath)
117        Set objFolderItem = objFolder.ParseName(LogName)
118        objFolderItem.ModifyDate = modifyDate
119        'WScript.Echo f.DateCreated & " " & f.DateLastAccessed & " " & f.DateLastModified
120    If (Err.Number <> 0) Then
121                WScript.Echo "[-] Error Trying To Delete IIS Log!"
122                Err.Clear
123    End If
124        'Start Log
125        Call SetLog(ID, 1)
126End Sub

这个脚本只能用于IIS6,IIS7由于重新设计过,所以完全不同了,这里也求大牛公布怎么删除iis7的日志
还有我听说3389日志可以单条删除,不知有哪位基友有此神器么?

转载于:https://www.cnblogs.com/Le30bjectNs11/p/4105790.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值