TAIL, WinTail, Get-Content
Hinweis:
Ich habe ein Programm basierend auf dieser
Funktion geschrieben, welches ans Ende springt
oder sich sogar die letzte Position merkt. Siehe
Get-Tail.
Für Unix Administratoren sind Programme wie TAIL und andere schon alte Bekannte und nicht weiter Erklärungswürdig. Aber ich habe immer wieder fest gestellt, dass viele Windows Administratoren noch nicht alle Hilfsmittel von Windows oder kostenfreie Tools anderer Programmierer können. Dazu gehört sicher auch TAIL und als Windows Variante auch WinTAIL.
Wofür kann ich das einsetzen ?
Das englische Wort "TAIL" steht eigentlich für Begriffe wie "Schwanz" oder "Ende" und bezeichnet bezogen auf eine Datei die letzten Zeilen dieser Datei.
Nun schreibt ja auch Windows und Exchange immer wieder die ein oder andere Protokolldatei wie z.B.:
- Message Tracking
Exchange speichert die Information über den Nachrichtentransfer in einfachen Textdateien. Ein Tail könnte diese Daten einfach zur Weiterverarbeitung senden, z.B. Um Missbrauch zu erkennen oder Alarme zu generieren. - IIS-Logs
Das gleich gilt für IISLogs, z.B. Um neue IMEIs bei Mobilgeräten (ActiveSync) zu erkennen und zu melden. - SMTP-Logs
Optional kann man auch beim SMTP-Service ein Log aktivieren, um Verbindungen von Client zu überwachen und umgehend zu melden. - TAIL auf NETMON/TCPDUMP
Wenn man einen TCP-Netzwerkmitschnitt z.B. in eine Datei protokolliert, könnte ein TAIL darauf beim auftreten bestimmter Muster (z.B. für Conficker etc.) Alarm schlagen. Auch WinPCap kann Traces ablegen (Siehe http://www.winpcap.org/windump/misc/faq.htm) - DNS-Logs
Man kann im Windows DNS-Server ein Diagnoseprotokoll aktivieren, um DNS-Anfragen in eine Textdatei zu loggen. Auch hier könnte man mit einem TAIL die Anfragen auf bestimmte Systeme (z.B. Trojaner-Domains oder obsolete Systeme etc. überwachen und melden. Dann fehlt nur noch eine Funktion, um die Logs zu rollen.
Aber auch einige andere Programme protokollieren ihre Aktivitäten in Dateien. Und Tail ist nun nichts anderes, also ein Programm, welches solche Dateien überwacht und in Echtzeit den Schluss einer Datei aktuell anzeigt.
Für die als Administrator bedeutet dies nun einfach, dass Sie nicht eine Protokolldatei z.B. mit Notepad öffnen und an das Ende scrollen müssen, sondern auch, dass Sie diesen Schritt vor allem nicht immer wieder wiederholen müssen, um aktuelle Daten anzuzeigen.
Beispiel
Ein praktisches Beispiel kann z.B. die Überwachung eines Webserverprotokolls sein, um den Zugriff eines PDAs oder OWA-Benutzers zu diagnostizieren. Sie möchten als Administrator einfach schnell erkennen, wenn auf den Webserver ein Zugriff erfolgt. Mit dem Programm TAIL (Windows Ressource Kit oder Windows 2003) ist dann eine Anzeige der letzten n Zeilen möglich.
Mit der Option "-f" wird TAIL angewiesen, die Datei immer und immer wieder auf Änderungen zu überprüfen und entsprechend anzuzeigen.
PowerShell Tail
Seit PowerShell 3 gibt es nun auch eine Tail-Funktion beim Commandlet "Get-Content", die den Namen Tail auch verdient. In früheren Versionen gab es zwar schon den "-WAIT"-Parameter, um am Ende einer Datei auf weitere Eingaben zu warten. Allerdings hat Get-Content dazu immer erst die komplette Datei eingelesen und dann am Ende gewartet.
Seit PowerShell 3.0 gibt es den Parameter "-Tail", mit dem Sie die Anzahl der Zeilen angeben können, die Get-Content am Ende noch einliest und dann wartet.
- Get-Content
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-content
Diese Funktion ist erstaunlich intelligent, da auch das Lesen der letzten Zeilen einer 800 MB IISLog-Datei nur Bruchteile einer Sekunde dauert. Ich denke, dass Get-Content vom Ende rückwärts liest.
Für weitere Anforderungen habe ich mir aber ein eigenes PowerShell-Script gebaut, welches in einer Statudatei sich auch die Position speichern kann. So kann ich auch nach einer Unterbrechung dort wieder aufsetzen, wo ich abgebrochen habe.
TailforWin32
Wenn Sie mit der klassischen "Dos-BOX" etwas auf Kriegsfuß stehen und vielleicht sogar noch ein paar Zusatzfunktionen wünschen, dann gibt es auch Vertreter mit einer grafischen Oberfläche. So gibt es auf Sourcefourge (http://sourceforge.net/projects/tailforwin32) eine kostenfreie Implementation für Windows, mit der Sie in einer GUI auch mehrere Dateien überwachen können.
Da die Überwachung auch über Netzwerk funktioniert, ist damit eine einfach Kontrolle mehrere Prozesse möglich, wenn diese Diagnoseausgaben in Dateien schreiben. Zusätzlich kann dieses Programm auch Codeworte farblich kennzeichnen und über Plug-ins z.B. auch eine Mail senden, wenn ein bestimmter Text auftaucht.
Fazit
Jeder Windows Administrator, der Prozesse überwachen muss, die Textdateien schreiben, sollte TAIL bzw. eine entsprechende Windowsvariante können und zur Hand haben.
Weitere Links
-
Get-Tail
Vielleicht wird aus der Idee einmal Realität - Windows 2003 Lieferumfang: TAIL
-
http://sourceforge.net/projects/tailforwin32
http://www.codeproject.com/tools/Tail_for_Win32.asp -
http://www.baremetalsoft.com/wintail/
WinTail ist kostenfrei. Erweiterte Funktionen sind kommerziell - http://wwwendt.de/freeware/win32/wintail.html
-
Tail mit PowerShell
http://devcentral.f5.com/weblogs/Joe/archive/2009/04/22/unix-to-PowerShell---tail.aspx
Allerdings nicht optimal, da die Datei immer mit get-content komplett gelesen wird. -
Systems Management Server 2003 Toolkit 2 (6,4MB)
Enthält das Programm SMSTrace, welches auch TAIL unterstützt
http://www.microsoft.com/downloads/details.aspx?FamilyID=61e4e21f-2652-42dd-a04d-b67f0573751d&DisplayLang=en
http://msmvps.com/blogs/clustering/archive/2006/09/10/Read-your-cluster-log-live-with-SMS-Trace.aspx -
Baretail
http://www.baremetalsoft.com/baretail/ -
Codeproject WinTail
http://www.codeproject.com/KB/cs/wintail.aspx -
TraceTool
http://www.codeproject.com/KB/trace/tracetool.aspx -
Document updater updates your opened documents in Notepad++ every 3
seconds
Source: http://sourceforge.net/projects/npp-Plugins/files/DocMonitor/