lefg 276 Geschrieben 3. Februar 2006 Melden Teilen Geschrieben 3. Februar 2006 Hallo Gemeinde, ich habe ein kleines Problem, ich möchte Zeilen einer Textdatei bearbeiten, genauer hinzufügen, entfernen. Das Hinzufügen von Zeilen ein eine Textdatei geschieht mittel Redirector: echo Hallo World > Dateiname.txt legt eine neue Datei an und erzeugt die erste Zeile echo Hallo World >> Dateiname.txt existiert noch keine Datei wird diese angelegt und die erste Zeile geschrieben, sonst wird angehängt Ich habeleider noch keine Möglichkeit entdeckt, direkt einen Eintrag aus einer Textdatei zu entfernen mittels Kommandozeile. M;an könnte versuchen eine for /f-Schleife zu konstruieren, die letztlich die Aufgabe erfüllt, als das Wahre sehe ich es nicht an. Hat jemand eine Idee, einen Tipp? Dank für Aufmerksamkeit und Rat. Edgar Zitieren Link zu diesem Kommentar
czappb 10 Geschrieben 3. Februar 2006 Melden Teilen Geschrieben 3. Februar 2006 Muss es unbedingt cmd sein oder kann es auch VBScript sein? Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 3. Februar 2006 Autor Melden Teilen Geschrieben 3. Februar 2006 Muss es unbedingt cmd sein oder kann es auch VBScript sein?So ich das Ding begreife, bin ich nicht abgeneigt. ;) :) Zitieren Link zu diesem Kommentar
czappb 10 Geschrieben 3. Februar 2006 Melden Teilen Geschrieben 3. Februar 2006 Naja ich hätte jetzt kein fertiges Script allerdings hab ich ein paar geschrieben die zum Beispiel eine Syslogdatei filtern und das Ergebnis in eine neue schreiben... Man könnte das mit ein wenig VBScript Kenntnisse so ändern dass nur bestimmte nicht geschrieben werden... Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 3. Februar 2006 Autor Melden Teilen Geschrieben 3. Februar 2006 Ich möchte das Teilziel näher beschreiben: Meldet sich ein User an einen Client an, soll der Rechnername in eine Textdatei geloggt werden, meldet sich der User wieder ab, soll der Eintrag aus der Datei entfernt werden. Möglicherweise bin ich mit der Idee des Ein- und Austragens in und aus einer datei auf dem verkehrten Schiff. Vieleicht sollte ich für jeden Client eine einzelne Datei mit dessen Namen bei der Anmeldung erzeugen, bei der Abmeldung wieder löschen. Mit dir R201*.txt >> Spool%time%.txt geht das in weitere Textdatei, deren Inhalt, Zeilen von einer for /f-Schleife zur Bedingung ausgewertet werden. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 3. Februar 2006 Autor Melden Teilen Geschrieben 3. Februar 2006 Möglicherweise habe ich ja was gefunden. Logparser Zitieren Link zu diesem Kommentar
BuzzeR 10 Geschrieben 3. Februar 2006 Melden Teilen Geschrieben 3. Februar 2006 Hallo Edgar. Habe ich da jetzt was falsch verstanden, oder meintest Du vielleicht sowas? @echo off findstr /V /C:%1 %2 > ziel.txt del %2 ren ziel.txt %2 Das filtert Dir eine übergebene Zeichenkette aus einer Textdatei. LG Marco Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 3. Februar 2006 Autor Melden Teilen Geschrieben 3. Februar 2006 Hallo Marco, ich bin nicht sicher ob ich das blicke, deshalb beschreibe ich aml genauer. Nehmen wir einen Pool (Klassenraum) mit 30 Clients. Die User melden sich an, pro Client wird ein Eintrag in einer Textdatei erzeugt. [R214] R214-PC01 R214-PC02 R214-PC05 ...... Nun logt sich der User an PC01 aus, der Eintrag muss dann aus der Datei entfernt werden. [R214] R214-PC02 R214-PC05 ...... Das müsste idealerweise aber auch schnell gehen. Mich würde aber interessieren, ob es im cmd-Bereich etwas gibt, mit dem man sowas machen kann, einen geeigneten Parser. Zitieren Link zu diesem Kommentar
BuzzeR 10 Geschrieben 3. Februar 2006 Melden Teilen Geschrieben 3. Februar 2006 Ja, genau das macht die kleine Batch-Datei von mir. Du kopierst sie und speicherst sie z.B. unter dem Dateinamen KillAccount.bat. Wenn Du sie nun wie folgt aufrufst ... C:\>KillAccount R214-PC03 Accounts.txt ... dann passiert folgendes. Innerhalb der Batchdatei wird findstr aufgerufen. R214-PC03 ist der erste übergebene Parameter und ist somit %1. Accounts.txt ist der zweite Parameter und somit %2 in der Batchdatei. findstr durchsucht jetzt die Datei Accounts.txt und gibt alle Zeilen aus, die dem Suchparameter %1 nicht entsprechen. Die Ausgabe leite ich in eine temporäre Datei ziel.txt, in welcher jetzt alle Rechner sind, außer R214-PC03. Jetzt wird Accounts.txt nur gelöscht und ziel.txt in Accounts.txt umbenannt. Wobei ich das loggen von Anmeldungen lieber mittels GPO steuere und nicht mit einer Batch-Datei. LG Marco Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 3. Februar 2006 Autor Melden Teilen Geschrieben 3. Februar 2006 @echo off findstr /V /C:%1 %2 > ziel.txt del %2 ren ziel.txt %2 Was enthalten die Übergabeparameter %1 und %2 ? Gemäss Synopsis wird mit /C: Zeichenkette geschaltet. /V bestimmt die Übertragung der nicht aufgefundenen Zeichenketten. In %2 steht wohl der Name der Quelldatei, denn del ist ein Dateibehandlangsbefehl, er löscht die Quelldatei. Am Schluss erhält die Zieldatei den Namen der Quelldatei. %1 enthält also den Rechnernamen, %2 den Namen der Pooldatei. Das ist eine gute Idee, mein Lieber; ich danke dir. Gruß Edgar Zitieren Link zu diesem Kommentar
BuzzeR 10 Geschrieben 3. Februar 2006 Melden Teilen Geschrieben 3. Februar 2006 Hatte gerade wohl meinen letzten Beitrag editiert, als Du geantwortet hast. Hast aber Recht, genau so läuft das. Danke für das Lob. LG Marco Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 5. Februar 2006 Autor Melden Teilen Geschrieben 5. Februar 2006 Wobei ich das loggen von Anmeldungen lieber mittels GPO steuere und nicht mit einer Batch-Datei.Hallo Marco, erklärst du mir das bitte genauer? Dank & Gruß Edgar Zitieren Link zu diesem Kommentar
BuzzeR 10 Geschrieben 5. Februar 2006 Melden Teilen Geschrieben 5. Februar 2006 Hallo Edgar, ich erstelle einfach eine neue Überwachungsrichtlinie und aktiviere Anmeldereignisse Erfolgreich überwachen. Dann werden mir die Anmeldeereignisse per GPO schön geloggt. LG Marco Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 5. Februar 2006 Autor Melden Teilen Geschrieben 5. Februar 2006 Dann werden mir die Anmeldeereignisse per GPOschön geloggt. Hallo Marco, dann würden die Ereignisse im Event.log stehen, nicht wahr? Das müsste ausgewertet werden, oder gibt es da eine andere Möglichkeit? Wie, wo kann eine neue Überwachungsrichtlinie erstellt werden? Zitieren Link zu diesem Kommentar
BuzzeR 10 Geschrieben 6. Februar 2006 Melden Teilen Geschrieben 6. Februar 2006 Hi Edgar, habe den Thread aus dem Auge verloren, sorry. :( Ja, die Ereignisse würden dann selbstverständlich im EventLog auftauchen, aber das ist m. E. kein Nachteil, sondern eher ein Vorteil, weil die Logs genau dafür gedacht sind und es somit die konformste Realisierung eines Login-Loggings darstellt. Die Auswertung der Eventlogs kann man auch über Kommandozeile sehr einfach durchführen und sich so für kleine Netze auch selbst eine Monitoring-Lösung schaffen. Ich mache das mit wmic, lasse mir HTML-Seiten generieren, speichere diese in einen Ordner mit IIS - Zugriff und kann mir so dann mittels Browser an jedem Rechner im Netz die Logs anschauen. Als Beispiel suche ich jetzt einmal die logischen Laufwerke, mit all ihren Daten und lasse das Ergebnis in eine HTML-Seite fließen. C:\> wmic logicaldisk list full /format:htable > LogDisk.htm Oder hier schaue ich mal nach Events im Log Sicherheit und lasse mir alle Events anzeigen, die ab dem 06.02.2006 erstellt wurden. Letzteres in einer verkürzten Darstellung, was ich mittels des Schalters BRIEF erreiche. C:\> wmic ntevent where "LogFile='Security' and TimeGenerated>'20060206'" list brief /format:htable > Events.htm Oder hier ermittel ich z.B. die Taktfrequenz eines Prozessors anhand einer festen Pfadvorgabe. C:\> wmic path Win32_Processor where "DeviceID='CPU0'" get CurrentClockSpeed Kannst Dir aber auch ganze Informationen zum OS, Computersystem, oder was auch immer holen und das gerne auch Remote. Hier folgt jetzt ein Beispiel, wo ich remote auf meinen DC zugreife und mir die Infos zum OS hole. C:\> wmic /node:VOTAN os list full /format:htable > votanOS.htm Wobei VOTAN hier mein DC ist, welchen ich unter /node spezifiziert habe. wmic ist also schon ein nettes Tool um mal eben fix im Netzwerk was abzufragen. Was die Überwachungsrichtlinie betrifft so erstelle ich diese mittels der gpmc.msc. Unter Gruppenrichtlinienobjekte erstelle ich dann ein neues GPO mit den jeweiligen Anpassungen, im aktuellen Fall also unter: Computerkonfiguration | Windows-Einstellungen | Sicherheitseinstellungen | Lokale Richtlinien | Überwachungsrichtlinie ... und passe dort den Punkt Anmeldeereignisse an. LG Marco Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.