HTTP/1.0 200 OK Accept-Ranges: none Content-Location: http://blog.emporio-web.com/lang/pt-pt/2010/09/script-para-arquivamento-de-logs-em-windows/comment-page-1/ Content-Type: text/html; charset=UTF-8 Date: Sun, 20 May 2012 09:17:56 GMT Expires: Thu, 19 Nov 1981 08:52:00 GMT X-Frame-Options: ALLOWALL Set-Cookie: PREF=ID=1abac3cc659fb727:TM=1337505476:LM=1337505477:S=i_qhbsdjPKMps_lk; expires=Tue, 20-May-2014 09:17:57 GMT; path=/; domain=translate.googleusercontent.com X-Content-Type-Options: nosniff Server: HTTP server (unknown) Cache-Control: private X-XSS-Protection: 1; mode=block Script pour archiver les journaux dans Blog de la technologie Windows - emporio-web.com

Calendrier

Septembre 2010
S T Q Q S S D
«Juillet Out '
Une 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Sondages

Que faut-il pour améliorer ce blog?

Voir les résultats

Loading ... Chargement en cours ...

Script pour archiver les journaux dans WindowsScript pour l'archivage journaux sur Windows

Beaucoup de travail avec vos journaux?

Si vous avez à gérer plusieurs serveurs, prendre soin des journaux de sécurité de chacun d'eux est un travail difficile!

La meilleure solution est l'automatisation! La création d'un script automatisé pour récupérer les logs de chaque serveur, supprimer les événements de l'Observateur d'événements et tout stocker dans un dossier sur le serveur de fichiers (ou n'importe quel dossier autre réseau).

Le script ci-dessous montre comment parcourir une liste de serveurs (via le fichier Servers.txt), récupérer le journal de sécurité et de l'envoyer à un emplacement central à distance:

 'VB Script Document'Para exécuter «cscript logs.vbs« ---------------------------------- ---------- strDate = Année (Maintenant) & "-" & String (2 - Len (Mois (Maintenant)), "0") & Mois (Maintenant) & _ "-" & String (2 - Len ( Jour (Maintenant)), "0") & Day (maintenant) pastaLocal = "C: \ logs" "pastaLocal doit être indiqué dans le dossier arquivoLogarquivoLog =" C: \ Logs \ "& strDate &"-SEG.evt «fichier journal local de chaque machine remotapastaRemota = "\ \ arquivos2 \ logs" arquivoSRV = "\ \ arquivos2 \ logs \ Servers.txt" WScript.Echo vbCrLf & "Event Collector de sécurité" et "Liste d'entrée:" vbCRLF & vbCrLf & _ & vbTab & arquivoSRV & vbCrLf & _ "Emplacement du journal le dossier:" & vbTab & logfile & "(sur chaque machine distante)" & vbCrLf & _ "dossier Connexion à distance:" & vbTab & pastaRemota & vbCRLF & vbCRLFSet OFS = CreateObject ("Scripting.FileSystemObject") 'Ouvre le fichier texte avec le annonce servidores'Apenas d'un ordinateur en ligne, sans espaces et sans onglet! Set OTS = oFS.OpenTextFile (arquivoSRV) »court le textoDo fichier Jusqu'à oTS.AtEndOfStream 'oTS.ReadLineWScript.StdOut.Write recherche computadorsComputer suivante =" connexion le "& sComputer &" ... "Set oWMIService = GetObject (" winmgmts: "_ &" {ImpersonationLevel = impersonate, (sécurité, sauvegarde)} \ \ "& _sComputer &" \ root \ cimv2 ") WScript.StdOut.Write" faite. "  & VbCrLf & "récupérer un fichier log à distance ..." "effectue une requête à la oWMIService.ExecQuery journal segurançaSet cLogFiles = (" Select * from Win32_NTEventLogFile où "&" LogFileName = "Sécurité" ") 'recherche de la collection logsFor Chaque oLogfile dans cLogFilesIf (oFS.FolderExists (pastaLocal)) = 0 ThenoFS.CreateFolder pastaLocalEnd IFIF (oFS.FileExists (logfile)) ThenoFS.Deletefile arquivoLogEnd If'faz la sauvegarde du journal dans un fichier local sur la machine remotaerrBackupLog oLogFile.BackupEventLog = (logfile) «Y at-il vérifier si errBackupLog erroIf <> 0 Then'se eu lieu - présente erroWscript.Echo vbCrLf &" Impossible de récupérer le journal "sComputer &&" Erreur: ". & errBackupLogElseWScript.StdOut.Write« fini ».  & VbCrLf & "Hors journal des événements à distance ..." "sans aucune erreur - il est sûr de supprimer le logoLogFile.ClearEventLog () WScript.StdOut.Write« fini ».  & VbCrLf & "Copie du fichier de la machine à distance à un référentiel central ..." Si (Non (oFS.FolderExists pastaRemota & "\" & sComputer)) ThenWScript.StdOut.Write "(Nouveau dossier) ..." oFS.CreateFolder pastaRemota & " \ "& sComputerEnd IfoFS.CopyFile" \ \ "& sComputer &" \ "& Remplacer (logfile," "," $ "), pastaRemota &" \ "& sComputer &" \ "& strDate &"-SEG.evt "WScript.StdOut. Ecrire «fini».  & VbCrLf & "à l'exclusion du fichier journal sur la machine distante ..." oFS.Deletefile "\ \" & sComputer & "\" & Remplacer (logfile, "", "$") WScript.Echo "fini. IfWScript.EchoNextLoop Fin» » fermer la servidoresoTS.Close fichier '------------------------------------------ - 

Les fichiers journaux po Evt occuper suffisamment d'espace, nous pouvons encore faire un script (ou ajouter à existante) pour copier les fichiers après les avoir enregistrées dans un format compressé (ZIP) pour économiser l'espace.

Voici une démonstration:

 'VB Script Document'Para exécuter «cscript arquivar.vbs" sous shell (cmd) "Exécuter une commande de la ligne de commande (shell) objShellSet dim objShell = WScript.CreateObject (" WScript.Shell ") objShell.Run (cmd ) Set objShell = Nothingend sous '------------------------------------------- -strDate = Année (Maintenant) & "-" & String (2 - Len (Mois (Maintenant)), "0") & Mois (Maintenant) & _ "-" & String (2 - Len (Jour (Maintenant)), "0" ) & Day (Now) pastaRemota = "\ \ arquivos2 \ logs" arquivoSRV = "\ \ arquivos2 \ logs \ Servers.txt« pastaRemota = "\ \ serveur \ GRP Files est \ dumpTest« arquivoSRV = "\ \ serveur \ PEB \ est \ dumpTest \ servers.txt "WScript.Echo vbCrLf &" événement Binder "& vbCrLf & vbCrLf & _" Fichier d'entrée: "& vbTab & arquivoSRV & vbCrLf & _" référentiel central: "& vbTab & pastaRemota & vbCRLF & vbCRLFSet OFS = CreateObject (" Scripting.FileSystemObject " ) 'Ouvrez le fichier texte avec les noms d'un ordinateur par servidores'apenas ligne sans espaces ou des tabulations! Set OTS = oFS.OpenTextFile (arquivoSRV)' Parcourt le fichier textoDo Jusqu'à oTS.AtEndOfStream 'Recherche computadorComputador = oTS.ReadLineWScript . StdOut.Write "Archivage des fichiers du serveur:" & Computer "..." Si (oFS.FileExists (Computer & "\" & strDate & "-SEG.evt")) ThenFileExists = "True" ElseFileExists = "False" Fin IFIF (FileExists = "True") Then'Executar 7z pour compresser arquivosArquivosZip = "7za.exe le" & Computer & "\" & strDate & ". zip" & Computer & "\" & "*. evt" shell ArquivosZipIf (oFS.FileExists (Computer & "\" & strDate & ". zip")) ThenWScript.StdOut.Write "Ok!"  & VbCrLf & vbCrLf & "fichiers d'événements de compensation ..." Computer oFS.Deletefile & "\ *. Evt" ElseWScript.StdOut.Write "FAIL!"  & VbCrLf & vbCrLf & "Erreur! Programme" Fin IfWScript.Echo «fini». WScript.EchoElseWScript.StdOut.Write "FAIL!"  & VbCrLf & vbCrLf & "Nous avons trouvé aucune trace de l'événement!" WScript.EchoEnd fichier IfLoop'fechar entradaoTS.Close '------------------------- ------------------- 

Grâce à ces conseils est une administration plus efficace des journaux d'événements et de les empêcher de se complète. Si vous voulez, vous pouvez intégrer les deux scripts ci-dessus dans un seul script, plus il donne de faire de l'archivage des autres types de connexion. Pour ce faire il suffit de remplacer la ligne LogFileName:

  Set cLogFiles oWMIService.ExecQuery = ("Select * from Win32_NTEventLogFile où" & "LogFileName =" Sécurité "") 

Par:

Demande LogFileName = 'Logs Application'para.

Système LogFileName = 'Logs System'para.

LogFileName = 'Le fichier de réplication journaux Service'para réplication de fichiers.

LogFileName = 'Service'para Logs service d'annuaire.

LogFileName = 'DNS Server'para journaux du serveur DNS.

Internet LogFileName = 'Logs Explorer'para Internet Explorer.

LogFileName = 'Journaux Windows PowerShell'para shell Windows.

La commande pour compresser (zip) les fichiers de 7zip est un logiciel open-source pour la compression de fichiers. Il peut être téléchargé à www.7zip.org . Dans ce cas, nous avons utilisé la version en ligne de commande qui ne nécessite aucune installation.

Maintenant, il vient de programmer ce script via le planificateur de tâches Windows (Task Scheduler) et le plan pour une exécution quotidienne.

3 commentaires à Script pour l'archivage journaux sur Windows

  • Martins

    Bonjour!

    Il est possible d'effectuer la compression ne log IIS, et supprimer des journaux après compression originas? /

    Reconnaissant

    Martins

    Aimez ou n'aimez pas: Thumb up 0 Thumb down 0

    • Bonjour Martin, oui c'est possible!

      Les archives de code suivant (compresses) les journaux IIS avec x nb de jours et vous permet également tiens également à supprimer les archives par date:

      Option Explicit
      WScript.Timeout = 82800

      «Les archives de script (Compresse un fichier zip, puis supprime les
      'Original) les fichiers journaux IIS âgés de plus de un certain nombre de jours spécifié.
      «Le script peut également supprimer des fichiers d'archives compressées plus
      »Que l'autre nombre de jours spécifié.
      »
      «Il Exécuter en tant que tâche quotidienne prévue pour le haut serveurs Web de la circulation à
      "Évitez de manquer d'espace disque. En règle générale les journaux IIS peut être
      «Compressed bien en dessous de 1/20 de la taille du fichier d'origine.
      »
      «Le script a besoin de la version ligne de commande de la libre 7-Zip
      », Disponible sur compresseur http://www.7-zip.org/~~V
      »
      «La fonction ArchiveLogFiles prend trois paramètres:
      "Chemin d'accès pour se connecter dir"
      "Compresser les fichiers journaux de plus de n jours et supprimer les fichiers originaux"
      "Supprimer les fichiers journaux compressés jour âgés de plus de n"
      »
      »Peuvent être des appels de fonction multiples ajoutées à des fichiers d'archives dans les différents
      «Connexion dossiers de journaux avec ses rétentions différentes.
      »
      «Que la fonction Remarque fonctionne de manière récursive par le biais des sous-dossiers, si
      «La rétention du journal même Doit être utilisé sur un tronc d'arbre dossier complet
      «Structure, un seul journal des appels avec le dossier racine est nécessaire.
      »D'autres appels à des sous-dossiers spécifiques peuvent alors être prises pour que
      «Ceux sur de plus courtes rétentions.
      »
      «Modifier les lignes ci-dessous par exemple pour faire correspondre les chemins de dossiers journaux,
      «Valeurs d'archivage et de conservation nécessaires sur le serveur.

      ArchiveLogFiles "D: \ Logfiles", 30.180
      ArchiveLogFiles "D: \ LogFiles \ W3SVC1", 14.30
      ArchiveLogFiles "D: \ LogFiles \ W3SVC243", 5,30
      ArchiveLogFiles "D: \ LogFiles \ SMTPSVC1", 7,60

      ArchiveLogFiles fonction (strLogPath, intZipAge, intDelAge)
      ObjFs Dim
      Dim objFsCheck
      ObjFolder Dim
      ObjSubFolder Dim
      Dim objfile
      ObjWShell Dim
      Réglez objWShell = CreateObject ("WScript.Shell")
      Réglez objFs = CreateObject ("Scripting.FileSystemObject")
      Réglez objFsCheck = CreateObject ("Scripting.FileSystemObject")
      Si la droite (strLogPath, 1) "\" Puis
      strLogPath strLogPath & = "\"
      End If
      Si objFs.FolderExists (strLogPath) Puis
      Réglez objFolder objFs.GetFolder = (strLogPath)
      Pour chaque objSubFolder dans objFolder.subFolders
      ArchiveLogFiles strLogPath & objSubFolder.Name, intZipAge, intDelAge
      Prochain
      Pour chaque objfile dans objFolder.Files
      Si (InStr (objFile.Name, "ex")> 0) _
      Et (à droite (objFile.Name, 4) = ". Connexion") Ensuite,
      Si DateDiff ("d", objFile.DateLastModified, Date)> Puis intZipAge
      objWShell.Run "7za.exe tzip a-" "" & _ & strLogPath
      Gauche (objFile.Name, Len (objFile.Name) -3) & "zip" "" "" & _
      strLogPath & objFile.Name & "" "", 7, vrai
      Si objFsCheck.FileExists (strLogPath & _
      Gauche (objFile.Name, Len (objFile.Name) -3) & "zip") Et _
      (ObjFsCheck.FileExists (strLogPath objFile.Name &)) Alors
      objFsCheck.DeleteFile (strLogPath & objFile.Name)
      End If
      End If
      ElseIf (InStr (objFile.Name, "ex")> 0) _
      Et (à droite (objFile.Name, 4) =. "Zip") Ensuite,
      Si DateDiff ("d", objFile.DateLastModified, Date)> Puis intDelAge
      objFsCheck.DeleteFile (strLogPath & objFile.Name)
      End If
      End If
      Prochain
      Set ObjFs = Nothing
      Set ObjFsCheck = Nothing
      Réglez objFolder = Nothing
      Réglez objWShell = rien
      End If
      End Function

      (Extrait de http://www.808.dk/?code-iis-log-housekeeping )

      Aimez ou n'aimez pas: Thumb up 0 Thumb down 0

  • Piva

    Sécurité du journal des événements Windows? , Besoin de lire ces journaux dandos pour récupérer et stocker dans une base de données.

    Aimez ou n'aimez pas: Thumb up 0 Thumb down 0

Laisser un commentaire

CAPTCHA Image
Rafraîchir l'image

*

Vous pouvez utiliser ces balises HTML

<a href=""title=""><abbr title=""><acronym title=""><b><blockquote cite=""><cite><code><del datetime=""><em><i><q cite=""><strike><strong>