Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Dateien überwachen

Mitglied: Hoffi

Hoffi (Level 1) - Jetzt verbinden

13.09.2007, aktualisiert 23.11.2007, 7706 Aufrufe, 4 Kommentare

Batch Datei ?

Hallo zusammen,

ich habe das Problem in unserem Netzwerk, das manche Dateien (Excle Mappen oder PDFs usw.) einfach gelöscht sind, und niemand will es gewesen sein, somit kann ich mindestens 3 mal täglich die Dateien über die Datensicherung wiederherstellen.

Nun habe ich mir ein altes Notebook (Windows XP SP2) eingerichtet und im Serverraum platziert. Jetz wollte ich gerne ein komplettes Netzlaufwerk "überwachen". Ich benötige hier kein riesen Tool oder so (hab auch schon manche getestet) sondern quasi bloß ein Logfile, das dann geschrieben wird, sobald sich eine Datei in diesem Verzeichnis ändert (also umbenannt, gelöscht, verschoben) wird.

Im Logfile sollte lediglich der Dateiname, Benutzername, Datum angezeigt werden.

Windows bringt zwar ein eigenes Tool mit, aber das geht bei uns nicht so toll (liegt auch unter anderem an unseren Server 2000).

Kennt jemand ein Batch Script, das dies bewerkstelligen kann?

Alternativ könnte ich das Notebook auch mit Linux ausstatten, falls es dort besser funktionieren sollte...

Bin für jeden Tip dankbar.

Grüße

Hoffi
Mitglied: Bitsqueezer
04.11.2007 um 02:25 Uhr
Hallo Hoffi,

da ich das gleiche Problem habe (Überwachung eines Ordners mit einfachsten Bordmitteln), habe ich mich mal an die Umsetzung in VBScript gemacht. Das folgende Skript kann in einem beliebigen Scheduler in entsprechend sinnvollen Abständen ausgeführt werden und sollte mit allen Windows-Versionen, die VBScript unterstützen, funktionieren. Das Skript generiert am Ende jeweils einen Alert für alle hinzugekommenen und einen für alle gelöschten Dateien seit dem letzten Aufruf. Der Benutzerkontext, unter dem das Skript ausgeführt wird, benötigt lediglich Schreibrechte auf C:\WINDOWS\Debug.

Gruß

Christian


01.
' Dateiüberwachung in einem Verzeichnis
02.
' *************************************
03.
' V1.0  02.Nov.2007
04.
' Letzte Änderung: 02.Nov.2007
05.
'
06.
' Autor: Christian Coppes
07.
' kann in SCOM oder anderen Schedulern (z.B. "Geplante Tasks") zur Überwachung von Verzeichnissen eingesetzt werden
08.
'
09.
' Die Datei muß mit irgendeiner Art von Scheduler in regelmäßigen Abständen aufgerufen werden.
10.
' Je nach Größe des Zielverzeichnisses sollte man die Zeit nicht zu kurz wählen, damit das Skript nicht
11.
' läuft, während eine alte Instanz noch nicht fertig ist.
12.
' Es empfiehlt sich, einen Wert von ca. 1 Minute nicht zu unterschreiten.
13.
' Mit den Konstanten unten kann man die Parameter an eigene Bedürfnisse anpassen.
14.
'
15.
' Funktionsweise: Per CMD-"dir"-Befehl wird der Inhalt des gewünschten Verzeichnisses
16.
' unter Verwendung von FILEMASK abwechselnd in die Datei DIRFILE0 und DIRFILE1 eingetragen.
17.
'
18.
' Zur Feststellung, welche Datei zuletzt verwendet wurde, dient die Datei SWITCHFILE0, die dann
19.
' abwechselnd in SWITCHFILE1 umbenannt wird.
20.
'
21.
' Es wird daraufhin festgestellt, welche die neuere DIRFILE ist, um die Änderung gegenüber der älteren
22.
' zu protokollieren.
23.
'
24.
' Die beiden DIRFILEs werden in jeweils ein Array eingelesen, die ältere Datei immer in "Zeile0",
25.
' die neuere immer in "Zeile1".
26.
'
27.
' Mit Hilfe des VBScript-Filter-Befehls wird dann Zeile für Zeile verglichen, welche Zeile in der älteren
28.
' Datei nicht vorhanden ist und diese in das Array "Hinzu1" eingefügt. Umgekehrt wird dann der Vergleich
29.
' durchgeführt, um Zeilen, die in der neueren Datei nicht mehr enthalten sind, in "Weg1" zu schreiben.
30.
'
31.
' Zuletzt wird für beide Gruppen je ein Event im Application Event Log angelegt. Über die Konstanten kann
32.
' man festlegen, ob auch die entfernten Dateien protokolliert werden und welche Art von Event dabei
33.
' generiert werden soll.
34.
'
35.
' Darüber hinaus wird nur ein Event generiert für alle hinzugekommenen und ein Event für alle gelöschten
36.
' Dateien, um die Anzahl der Events nicht zu groß werden zu lassen.
37.
'
38.
' Die Events können dann beispielsweise mit SCOM (Microsoft System Center Operations Manager) ausgewertet werden.
39.
'
40.
' Folgende DOS-Batchdatei prüft ebenfalls auf Dateiunterschiede.
41.
' Dies ist die VBS-Version, die ein wenig komfortabler ist.
42.
'
43.
'@echo off
44.
'if not exist Switch1.txt (if not exist Switch0.txt (echo 1 >Switch0.txt))
45.
'if exist Switch0.txt (set DirFile=Content0.txt) else (set DirFile=Content1.txt)
46.
'dir Logs /b /o /a-d err*.log 1>%DirFile% 2>Null
47.
'if exist Content0.txt (if exist Content1.txt (fc Content0.txt Content1.txt >Unterschied.log))
48.
'if exist Switch1.txt (ren Switch1.txt Switch0.txt) else (ren Switch0.txt Switch1.txt)
49.
'echo On
50.

51.
' Verzeichnis (absolut oder relativ zum Skriptpfad), in dem die Dateien protokolliert werden sollen
52.
Const LOGDIR = "Z:\Public\Compare\Logs"
53.
' Dateien, die gesucht werden sollen
54.
Const FILEMASK = "err*.log"
55.
' Art der verwendeten Logbucheinträge, 0 = Success, 1 = Error, 2 = Warning, 4 = Information
56.
Const NEWEVENT = 1
57.
Const DELEVENT = 2
58.

59.
' Diese temporären Dateien werden für den Vergleich benötigt.
60.
' Das Script muß in diesen Verzeichnissen Schreibrechte haben.
61.
Const DIRFILE0 = "C:\Windows\Debug\Content0.txt"
62.
Const DIRFILE1 = "C:\Windows\Debug\Content1.txt"
63.
Const SWITCHFILE0 = "C:\Windows\Debug\Switch0.txt"
64.
Const SWITCHFILE1 = "C:\Windows\Debug\Switch1.txt"
65.

66.
' NewDel = 1: Alle Unterschiede protokollieren
67.
' NewDel = 0: Nur neu hinzugekommene Dateien protokollieren
68.
Const NewDel = 1
69.

70.
Dim i, j, EventStr, AnzHinzu, AnzWeg
71.
Dim Datei,SwitchFile, DirFile
72.
Dim objFSO, objShell
73.

74.
Dim Zeile0(), Zeile1()
75.
Dim Hinzu, Hinzu1()
76.
Dim Weg, Weg1()
77.
Dim DummyFile
78.

79.
Set objFSO   = CreateObject("Scripting.FileSystemObject")
80.
Set objShell = CreateObject("WScript.Shell")
81.
'
82.
' Wurde schon eine Switchdatei erstellt?
83.
If ((Not objFSO.FileExists(SWITCHFILE0))  And _
84.
    (Not objFSO.FileExists(SWITCHFILE1))) Then
85.
   ' Switch-Datei erzeugen
86.
   Set SwitchFile=objFSO.OpenTextFile(SWITCHFILE0,2,true)
87.
   SwitchFile.WriteLine "1"   ' Dummyinhalt
88.
   SwitchFile.Close
89.
End If
90.

91.
' Schalterdatei prüfen und den Dateinamen für das Inhaltsverzeichnis
92.
' entsprechend einstellen (abwechselndes Schreiben)
93.
If objFSO.FileExists(SWITCHFILE0) Then
94.
   DirFile=DIRFILE0
95.
Else
96.
   DirFile=DIRFILE1
97.
End If
98.

99.
' Alle Err-Dateien aus dem Ordner sortiert in eine der beiden Content-
100.
' Dateien schreiben
101.
objShell.Run("%windir%\system32\cmd.exe /c dir "+ LOGDIR +" /b /o /a-d " + FILEMASK + " 1>"+DirFile+" 2>Null")
102.

103.
' Am Ende der Ausführung Schalter für den nächsten Durchlauf "umlegen"
104.
If objFSO.FileExists(SWITCHFILE0) Then
105.
   'Datei umbenennen
106.
   objFSO.MoveFile SWITCHFILE0 , SWITCHFILE1
107.
Else
108.
   objFSO.MoveFile SWITCHFILE1 , SWITCHFILE0
109.
End If
110.

111.
' *****************************************************
112.
' Dateivergleich zwischen Content0.txt und Content1.txt
113.
' *****************************************************
114.

115.
' In "Zeile0" immer die ältere Datei einlesen und
116.
' in "Zeile1" immer die neuere
117.
If DirFile = DIRFILE0 Then
118.
   DirFileAlt = DIRFILE1
119.
   DirFileNeu = DIRFILE0
120.
Else
121.
   DirFileAlt = DIRFILE0
122.
   DirFileNeu = DIRFILE1
123.
End If
124.

125.
'DIRFILE0 zeilenweise lesen
126.
Set DummyFile=objFSO.OpenTextFile(DirFileAlt,1,true)
127.
i=0
128.
Do until DummyFile.AtEndOfStream
129.
  ReDim Preserve Zeile0(i)
130.
  Zeile0(i)=DummyFile.ReadLine
131.
  i=i+1
132.
Loop
133.
DummyFile.Close
134.
Set DummyFile=Nothing
135.

136.
'DIRFILE1 zeilenweise lesen
137.
Set DummyFile=objFSO.OpenTextFile(DirFileNeu,1,true)
138.
i=0
139.
Do until DummyFile.AtEndOfStream
140.
  ReDim Preserve Zeile1(i)
141.
  Zeile1(i)=DummyFile.ReadLine
142.
  i=i+1
143.
Loop
144.
DummyFile.Close
145.
Set DummyFile=Nothing
146.

147.
' Hinzugekommene Dateien in das Array "Hinzu1" schreiben
148.
AnzHinzu=-1
149.
For i = 0 To UBound(Zeile1)
150.
   Hinzu = Filter(Zeile0,Zeile1(i),True)
151.
   If UBound(Hinzu)=-1 Then
152.
      AnzHinzu = AnzHinzu + 1
153.
      ReDim Preserve Hinzu1(AnzHinzu)
154.
      Hinzu1(AnzHinzu)=Zeile1(i)
155.
   End If
156.
Next
157.

158.
' Entfernte Dateien in das Array "Weg1" schreiben
159.
If NewDel = 1 then
160.
	AnzWeg=-1
161.
	For i = 0 To UBound(Zeile0)
162.
	   Weg = Filter(Zeile1,Zeile0(i),True)
163.
	   If UBound(Weg)=-1 Then
164.
	      AnzWeg = AnzWeg + 1
165.
	      ReDim Preserve Weg1(AnzWeg)
166.
	      Weg1(AnzWeg)=Zeile0(i)
167.
	   End If
168.
	Next
169.
End If
170.

171.
If AnzHinzu > -1 Then
172.
   ' Event für hinzugekommene Dateien in das Logbuch schreiben
173.
   EventStr = "Neu hinzugekommene Dateien vom Typ "+FILEMASK+" :" + vbCrLF
174.
   EventStr = EventStr + Join(Hinzu1,vbCrLf)
175.
   objShell.LogEvent NEWEVENT, EventStr
176.
   'WScript.Echo("EventHinzu: "+EventStr)
177.
End If
178.

179.

180.
If NewDel = 1 Then
181.
   If AnzWeg > -1 Then
182.
       EventStr = "Entfernte Dateien vom Typ "+FILEMASK+" :" + vbCrLF
183.
	   EventStr = EventStr + Join(Weg1,vbCrLf)
184.
       ' Event für entfernte Dateien in das Logbuch schreiben
185.
	   objShell.LogEvent DELEVENT, EventStr
186.
       'WScript.Echo("EventWeg: "+EventStr)
187.
   End If
188.
End If
Bitte warten ..
Mitglied: Hoffi
14.11.2007 um 13:18 Uhr
Hallo,

Danke für das Script, klappt bestens.

TOP...

Grüße

Hoffi
Bitte warten ..
Mitglied: therookie
23.11.2007 um 08:37 Uhr
Hallo,

ich habe das gleiche Problem mit den verschwundenen Dateien. Ich habe das Script hier zwar noch nicht getestet, aber geht das nicht ein bisschen an der Zielstellung vorbei?

Das Script zeigt das wichtigste doch gar nicht an, nämlich wenn Dateien gelöscht wurden, wer diese gelöscht hat.

Hast Du dafür schon ein Lösung, oder wie machst Du das jetzt?
Bitte warten ..
Mitglied: Bitsqueezer
23.11.2007 um 10:47 Uhr
Hallo,

Du kannst nur das überwachen, was auch irgendwo gespeichert wird. Das Script überprüft lediglich, welche Datei hinzugefügt oder gelöscht wurde und das Wann liegt zwischen der jeweiligen Ausführung des Skriptes.

Um festzustellen, wer etwas hinzugefügt oder gelöscht hat, kannst Du höchstens eine Überwachung per NTFS auf den Ordner hinzufügen. Ich habe mit der NTFS-Überwachung aber auch noch nicht gearbeitet und weiß nicht, ob das damit klappt.

Gruß

Christian
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
BATCH ini Datei Datei auslesen
gelöst Frage von Juergen42Batch & Shell2 Kommentare

Hallo zusammen, ich möchte eine ini Datei auslesen mit folgenden Aufbau INHALT DER INI ID=30 NAME="test1" PFAD="K:\Kontoauszug\Test1\*.pdf" PFAD_S="K:\Kontoauszug\Test1\Sicherung\" ID=28 ...

Viren und Trojaner
MPSigStub Datei
gelöst Frage von marilene1Viren und Trojaner2 Kommentare

Hallo, ich habe seit einigen Tage eine Datei MPSigStub. Ich kann es leider nicht löschen, da ich keine Berechtigung ...

Batch & Shell
SMIME Datei
gelöst Frage von mero59Batch & Shell4 Kommentare

Hallo liebes Forum, ich hab da mal folgendes Problem: ich überwache mit Powershell und EWS ein Funktionspostfach, d. h. ...

Batch & Shell
Datei suchen
gelöst Frage von IleiesBatch & Shell10 Kommentare

Hallo zusammen, Kann man mit Batch eine Datei im Computer suchen und wenn sie existiert in ihr Verzeichnis wechseln?

Neue Wissensbeiträge
Datenschutz

SiSyPHuS Win10: Analyse der Telemetriekomponenten in Windows 10

Tipp von freesolo vor 13 StundenDatenschutz1 Kommentar

Alle die sich detailliert für die Datensammlung interessieren die unter Windows 10 stattfindet, sollten sich folgende Analyse des BSI ...

Sicherheit
Adminrechte dank Intel-Grafikkarte
Information von DerWoWusste vor 16 StundenSicherheit1 Kommentar

ist das Advisory, welches beschreibt, welche Intel HD Graphics Modelle Sicherheitslücken haben, mit denen sich schwache Nutzer zu Admins ...

Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 1 TagInternet1 Kommentar

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 2 TagenWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Glasfaserkabel verlegen und Anschlüsse setzen
Frage von LLL0rdLAN, WAN, Wireless21 Kommentare

Hallo Leute, ich muss demnächst ein Netzwerkkabel auf einer Länge von ca. 70 Metern verlegen. Das Netzwerkkabel soll dabei ...

Windows Server
Mac Rechner im Windows Netzwerk - was jetzt?
gelöst Frage von Kopfg3ldWindows Server18 Kommentare

Hallo zusammen, ich habe folgende Herausforderungen. Aber erst mal was kurz zum Netzwerk - Windows Server (ältester ist ein ...

Microsoft Office
Sharepoint 2016 mag keine Umlaute in .docx-Titeln
gelöst Frage von DerWoWussteMicrosoft Office14 Kommentare

Moin Kollegen. Nutzt hier jemand Sharepoint? Könnt Ihr, unabhängig von der Sharepointversion, bitte einen Test machen? Ladet ein .docx ...

Basic
VBS soll alle Ordner auswählen, die im Startmenu angezeigt werden
Frage von Senseless-CreatureBasic12 Kommentare

Guten Morgen - gibt es eine Möglichkeit, per VBS das Startmenu in Win10 zu modifizieren? Ich beherrsche VBS mittlerweile ...