Skript zum automatischen Kopiervorgang von täglich erstelle Logdatei über PSCP RSA SSH
Hallo Leute,
ich suche nach einen Ansatz für ein Skript, welches vom aktuellen Tag erstellte Logdatei vom entfernten Server in einen gegebenen Pfad abholt und dieses dann auf meinen Lokalen Server speichert.
Der PSCP Vorgang ist dieser:
C:\Users\admin\Desktop>pscp.exe -i "Private-Key" -P "Port" Benutzer@Server:logs/20140401.log C:\Users\admin\Desktop\Logs
Der Dateiname wird nach JahrMonatTag täglich fortlaufend erstellt = 20140401.
Zurzeit liegt logischerweise 20140405.log 20140406.log 20140407.log 20140408.log 20140409.log vor.
Es liegen in diesen Verzeichnis Logs bis zu 5 Tage vor.
Mein Problem ist hier, wie kann ich eine Bedingung erstellen die auf dieses Format prüft und dann nur expliziet vom aktuellen Tag kopiert?!
ich suche nach einen Ansatz für ein Skript, welches vom aktuellen Tag erstellte Logdatei vom entfernten Server in einen gegebenen Pfad abholt und dieses dann auf meinen Lokalen Server speichert.
Der PSCP Vorgang ist dieser:
C:\Users\admin\Desktop>pscp.exe -i "Private-Key" -P "Port" Benutzer@Server:logs/20140401.log C:\Users\admin\Desktop\Logs
Der Dateiname wird nach JahrMonatTag täglich fortlaufend erstellt = 20140401.
Zurzeit liegt logischerweise 20140405.log 20140406.log 20140407.log 20140408.log 20140409.log vor.
Es liegen in diesen Verzeichnis Logs bis zu 5 Tage vor.
Mein Problem ist hier, wie kann ich eine Bedingung erstellen die auf dieses Format prüft und dann nur expliziet vom aktuellen Tag kopiert?!
Please also mark the comments that contributed to the solution of the article
Content-Key: 235002
Url: https://administrator.de/contentid/235002
Printed on: April 19, 2024 at 21:04 o'clock
2 Comments
Latest comment
Hallo Sumonah,
da Du mit einem exotischen Datumsformat arbeitest 'yyyymmtt', müsste zuerst das Datum für
formatiert werden.
So erhälst Du das aktuelle Datum in deinem gewünschtem Format.
Das Einlesen der Dateienname ist auch nicht so komplex:
Was komplexer ist, ist der Vergleich.
Hier könnte ich Dir eine quick and dirty Lösung anbieten.
Setzten deines Datumformates > Einlesen der Log-Dateien > Schreiben des letzten Datums in eine separate Datei > Einlesen des Datums > Vergleichen des Datums:
Gruß, Sascha
P.S.: Vielleicht hat jemand anderes noch eine bessere/einfachere Lösung.
da Du mit einem exotischen Datumsformat arbeitest 'yyyymmtt', müsste zuerst das Datum für
%date%
set mydate=%date:~6,4%%date:~0,2%%date:~3,2%
echo %mydate%
Das Einlesen der Dateienname ist auch nicht so komplex:
for /f "tokens=1 delims=." %%i in ('dir /a-d /b /o-d %LOG%\*.log') do echo %%i
Hier könnte ich Dir eine quick and dirty Lösung anbieten.
Setzten deines Datumformates > Einlesen der Log-Dateien > Schreiben des letzten Datums in eine separate Datei > Einlesen des Datums > Vergleichen des Datums:
@echo off
set log="C:\Skripte\Neuer Ordner"
set logfile="C:\Skripte\Neuer Ordner\output.properties"
set datum=%date:~6,4%%date:~3,2%%date:~0,2%
for /f "tokens=1 delims=." %%i in ('dir /a-d /b /od %LOG%\*.log') do echo %%i > %logfile%
set LineNo=1
set "LOGNR="
set /a LineNo-=1
FOR /f %%a in ('more/e +%LINENO% ^< %logfile%') do (
IF NOT DEFINED LOGNR set "LOGNR=%%a"
)
IF /i %LOGNR% GEQ %datum% ( echo %LOGNR% und %datum% sind gleich
) ELSE echo %LOGNR% und %datum% sind nicht gleich
P.S.: Vielleicht hat jemand anderes noch eine bessere/einfachere Lösung.