IIS6 日志删除脚本(t00ls)

mac2022-06-30  24

发个很早前自己写的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)