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

BATch soll neuste Datei eines bestimmten Dateiy-Typs auf einem FTP-Server finden

Mitglied: pcklick

pcklick (Level 1) - Jetzt verbinden

12.01.2013 um 16:19 Uhr, 2082 Aufrufe, 10 Kommentare

Hey Leute,
folgendes Problem:
Ich möchte per Batch ein Backup, das auf meinem FTP Webspace liegt automatisch dowloaden. Den Pfad zum Ordner der .zip Dateien ist mir bekannt.
Ich weiss nur nicht, wie ich per .ftp-Datei ein Skript mache, dass die neuste .zip Datei abfrägt. Kann mir jemand helfen / einen Codeschnipsel empfehlen?

Vielen Dank für alle Bemühungen und Hilfen im Vorraus! :D
Mitglied: 108012
12.01.2013 um 17:29 Uhr
Hallo pcklick,

lass das ein Script auf dem FTP Server machen!

Sonst läuft man schnell Gefahr, dass das jemand ausnutzt, von außerhalb über das Internet!
und wenn der dann erwischt wird, braucht er nur zu sagen er habe nichts böses gewollt und
hat sich mit seinem Script oder seiner Batch-Datei verschrieben!

Von mir aus auch zwei Scripte intern, eines guckt nach neuen Dateien und das andere wird dann erst aktiv wenn das erste etwas "neues" gefunden hat! Das hält den Code schlank und ist von außerhalb nicht aus zu
nutzen, respektive man kann auf Grund der besseren Übersicht Fehler schneller entdecken.

Gruß
Dobby
Bitte warten ..
Mitglied: Friemler
12.01.2013, aktualisiert 13.01.2013
Hallo pcklick,

abhängig davon, in welchem Format Dein FTP-Server seine Verzeichnislistings ausliefert, könnte das so gehen:
01.
@echo off & setlocal 
02.
 
03.
 
04.
::Daten für die FTP-Verbindung 
05.
set "FTPServer=Server" 
06.
set "FTPUser=Username" 
07.
set "FTPPassword=Passwort" 
08.
set "FTPDir=/" 
09.
set "FTPFileType=zip" 
10.
 
11.
::Pfade von temporären Dateien 
12.
set "GetFTPDirListing=%TEMP%\GetFTPDirListing.txt" 
13.
set "FTPDirListing=%TEMP%\FTPDirListing.txt" 
14.
set "FTPDirListing2=%TEMP%\FTPDirListing2.txt" 
15.
 
16.
 
17.
::Die temporäre Datei leeren, die das Verzeichnislisting aufnimmt 
18.
type NUL > "%FTPDirListing%" 
19.
 
20.
::FTP-Script in temporäre Datei schreiben 
21.
> "%GetFTPDirListing%" echo open %FTPServer% 
22.
>>"%GetFTPDirListing%" echo user %FTPUser% %FTPPassword% 
23.
>>"%GetFTPDirListing%" echo ascii 
24.
>>"%GetFTPDirListing%" echo cd "%FTPDir%" 
25.
>>"%GetFTPDirListing%" echo ls -l "%FTPDirListing%" 
26.
>>"%GetFTPDirListing%" echo bye 
27.
 
28.
::FTP-Script ausführen 
29.
::Das Verzeichnislisting wird dabei lokal in eine temporäre Datei geschrieben 
30.
ftp /inv /s:"%GetFTPDirListing%" > NUL 
31.
 
32.
 
33.
::Aus dem Verzeichnislisting die Zeilen herausfiltern, die Dateien des gewünschten Typs enthalten 
34.
::Die Angaben zum Datum und den Dateinamen an das Unterprogramm ProcessFile übergeben 
35.
::Dessen Ausgaben werden in eine temporäre Datei umgeleitet 
36.
(for /f "tokens=6-8*" %%a in ('findstr /i /r /c:"^-.*\.%FTPFileType%$" "%FTPDirListing%" 2^>NUL') do ( 
37.
   call :ProcessFile %%c %%a %%b "%%d" 
38.
)) > "%FTPDirListing2%" 
39.
 
40.
 
41.
::Die im letzten Schritt erzeugte Datei mit SORT in absteigender Reihenfolge sortieren 
42.
::Dadurch steht die jüngste Datei in der ersten Zeile. Diese Zeile auslesen und dann Abbruch 
43.
for /f "tokens=3*" %%a in ('sort /r "%FTPDirListing2%" 2^>NUL') do ( 
44.
  set "NewestFile=%%b" 
45.
  goto :ReadResultLoopBreak 
46.
47.
 
48.
:ReadResultLoopBreak 
49.
::Ergebnis ausgeben 
50.
echo.%NewestFile% 
51.
 
52.
 
53.
::Temporäre Dateien löschen 
54.
del "%FTPDirListing%" 
55.
del "%FTPDirListing2%" 
56.
del "%GetFTPDirListing%" 
57.
 
58.
::Script Ende 
59.
exit /b 0 
60.
 
61.
 
62.
 
63.
::Unterprogramm 
64.
::Erzeugung der 2-stelligen numerischen Darstellung eines Monatsnamens 
65.
:ProcessFile 
66.
  set "MonthNames=Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec" 
67.
  set "MonthA=%2" 
68.
  set /a MonthN=0 
69.
 
70.
  ::Monatsnummer aus dem Namen ermitteln 
71.
  for %%m in (%MonthNames%) do ( 
72.
    set /a MonthN+=1 
73.
    if /i "%%m" equ "%MonthA%" goto :MapLoopBreak 
74.
75.
 
76.
  :MapLoopBreak 
77.
  ::Aus der Monatsnummer die 2-stellige Darstellung erzeugen 
78.
  set "MonthN=0%MonthN%" 
79.
  set "MonthN=%MonthN:~-2%" 
80.
 
81.
  ::Datum und Dateiname ausgeben 
82.
  ::Anschließend ein Zeilenumbruch 
83.
  <NUL set /p "=%1 %MonthN% %3 %~4" 
84.
  echo. 
85.
 
86.
::Back to caller 
87.
exit /b 0
Das Script ist auf das folgende Format eines Verzeichnislistings ausgelegt:
-rw-r--r--    1 ftp      ftp         74610 Jun 06  2012 hist-deu.txt 
-rw-r--r--    1 ftp      ftp         28537 Oct 22  2010 hist-eng.txt 
-rw-r--r--    1 ftp      ftp          1468 Jul 27  2010 info-deu.txt 
-rw-r--r--    1 ftp      ftp          1672 Jul 27  2010 info-eng.txt 
dr-xr-xr-x   11 ftp      ftp          4096 Nov 28  2006 programs 
drwxr-xr-x    2 ftp      ftp          4096 Mar 11  2003 public 
dr-xr-xr-x   13 ftp      ftp          4096 Dec 08  2008 tools
Gruß
Friemler
Bitte warten ..
Mitglied: pcklick
12.01.2013 um 22:43 Uhr
Vielen lieben Dank! Da hast du dir echt Mühe gegeben. Trotzdem erhalte ich nach nur diesem Stück, den Fehler "Anmeldefehler":
@echo off & setlocal


::Daten für die FTP-Verbindung
set "FTPServer=ftp.pcklick.net"
set "FTPUser=w00ec0b6"
set "FTPPassword=XXXXXXXXXX"
set "FTPDir=/wordpress/wp-content/7bd31336c0-backups/"
set "FTPFileType=zip"

::Pfade von temporären Dateien
set "GetFTPDirListing=%TEMP%\GetFTPDirListing.txt"
set "FTPDirListing=%TEMP%\FTPDirListing.txt"
set "FTPDirListing2=%TEMP%\FTPDirListing2.txt"


::Die temporäre Datei leeren, die das Verzeichnislisting aufnimmt
type NUL > "%FTPDirListing%"

::FTP-Script in temporäre Datei schreiben
"%GetFTPDirListing%" echo open %FTPServer%
>>"%GetFTPDirListing%" echo user %FTPUser% pass %FTPPassword%
>>"%GetFTPDirListing%" echo ascii
>>"%GetFTPDirListing%" echo cd "%FTPDir%"
>>"%GetFTPDirListing%" echo ls -l "%FTPDirListing%"
>>"%GetFTPDirListing%" echo bye

::FTP-Script ausführen
::Das Verzeichnislisting wird dabei lokal in eine temporäre Datei geschrieben
ftp /inv /s:"%GetFTPDirListing%" > NUL
Stimmt das so? Oder muss ich noch etwas ausfüllen? Bzw. bearbeiten?
Danke für die Hilfe :D
Bitte warten ..
Mitglied: Friemler
13.01.2013 um 00:45 Uhr
Hallo pcklick,

es könnte sein, dass Du in Deinem Passwort irgendwelche Sonderzeichen verwendest. In welcher Codierung/mit welchem Editor hast Du das Script und damit auch Dein Passwort gespeichert? Teste auf jeden Fall mal Windows Notepad (Codierung ANSI bzw. Codepage Windows-1252) und z.B. Notepad++ oder Notepad2 (beide kostenlos) in der Codierung OEM850.

Gruß
Friemler
Bitte warten ..
Mitglied: pcklick
13.01.2013 um 11:21 Uhr
Ich nutze Notepad++
Das Passwort besteht nur aus Buchstaben und Zahlen... Was mache ich falsch? :D
Bitte warten ..
Mitglied: Friemler
13.01.2013, aktualisiert um 11:40 Uhr
Hallo pcklick,

ich hatte einen kleinen Bug in der Zeile für die Anmeldung am FTP-Server, ist bereits korrigiert.

Damit das Script funktioniert, muss das Verzeichnislisting so formatiert sein, wie in meinem Beispiel. Dabei kommt es auf die folgenden Faktoren an:

  • Die erste Spalte muss die Attributbits enthalten, bei Dateien muss die Zeile mit einem Minuszeichen beginnen.
  • Die Spalten 6 bis 8 enthalten das Dateidatum in der Reihenfolge Monatsname Tag Jahr.
  • Der Monatsname ist als englische Abkürzung angegeben.
  • In Spalte 9 steht der Dateiname.

Gruß
Friemler
Bitte warten ..
Mitglied: pcklick
13.01.2013 um 15:02 Uhr
Okay, die Anmeldung geht jetzt...
Doch ich würde die ermittelte Datei gern downloaden... Die Variable "%NewestFile%" zeigt mir nichts an?
Bitte warten ..
Mitglied: Friemler
13.01.2013, aktualisiert um 15:59 Uhr
Hallo,

Du meinst also, das Script zeigt Dir nichts an? Ich habe ja bereits mehrmals geschrieben, dass das Script auf ein gewisses Format des Verzeichnislistings angewiesen ist.

Starte bitte eine Konsole/Eingabeaufforderung und tippe folgende Kommandos ein:
cd /d "%UserProfile%\Desktop" 
ftp -n 
open ftp.pcklick.net 
user w00ec0b6 DeinPasswort 
ascii 
ls -l ftpdir.txt 
bye
Auf Deinem Desktop müsste danach eine Datei ftpdir.txt vorhanden sein. Poste bitte den Inhalt dieser Datei, damit ich das Script anpassen kann. Und benutze für das Posting bitte Code-Tags, ich brauche die unverfälschte Ausgabe!

Gruß
Friemler
Bitte warten ..
Mitglied: pcklick
13.01.2013 um 15:45 Uhr
Erstmal vielen Dank für die Hilfe!
Hier das Verzeichniss:

globaltechnews
drupal-7.12
WichtigerOrdnerNichtLöschen
wplounge
.
logs
Überreste1
usage
wordpress
neuste.bat
shop
infophp.php
..
Bitte warten ..
Mitglied: Friemler
13.01.2013 um 15:54 Uhr
Hallo,

wenn das wirklich die Antwort Deines FTP-Servers auf den Befehl
ls -l
ist, kann man Dir nicht helfen. Der Befehl liefert normalerweise die lange Version eines Verzeichnislistings, d.h. incl. Datumsangaben und Angaben zum Typ eines Eintrags (es kann ja ein Verzeichnis oder eine Datei sein). Ohne diese Angaben kann man natürlich auf dem lokalen Rechner nicht die neueste Datei im FTP-Verzeichnis ermitteln.

Evtl. lässt sich da was an der Konfiguration des FTP-Servers einstellen, das musst Du aber mit Deinem Hoster klären.

Gruß
Friemler
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch - IF - mehr als eine Datei eines bestimmten Typs

gelöst Frage von zimbosmurfBatch & Shell9 Kommentare

Hallo! Ich möchte in einer Batchdatei eine Datei eines bestimmten Typs verarbeiten. Hierfür hole ich mir mit for %%G ...

Batch & Shell

Batch: bestimmte Datei finden und den Ordner verschieben

gelöst Frage von Gari.onBatch & Shell9 Kommentare

Hallo! ich hoffe ich bin hier richtig, es geht um folgendes Problem: in einem Ordner liegen mehrere Unterordner mit ...

Batch & Shell

FTP Batch mit Semaphoren Datei

Frage von DirkK73Batch & Shell1 Kommentar

Hallo zusammen, ich bräuchte Eure Hilfe beim Erstellen eines Batches das folgende Aufgabe hat: Wir haben interne virtuelle Server. ...

Batch & Shell

Batch zum suchen bestimmter Dateien

gelöst Frage von FurycanBatch & Shell2 Kommentare

Hallo zusammen, ich hoffe man kann mir hier helfen. Ich Suche ein Script das mir folgendes macht: In einem ...

Neue Wissensbeiträge
Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 6 StundenWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 9 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 1 TagWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 2 TagenSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell34 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++34 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

Batch & Shell
Mit Powershell den Inhalt einer Excel mit einer Text Datei abgleichen
gelöst Frage von Bommi1961Batch & Shell21 Kommentare

Hallo zusammen, ich muss den Inhalt einer Excel Datei (Mappe1) mit dem Daten einer Text Datei abgleichen. Die Daten ...