Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

FTP Verbindung prüfen per Batch

Frage Entwicklung Batch & Shell

Mitglied: dbreuer

dbreuer (Level 1) - Jetzt verbinden

28.01.2011, aktualisiert 15:25 Uhr, 7526 Aufrufe, 6 Kommentare

Hallo,
ich habe ein kleines Problem und hoffe ihr könnt mir helfen.

Ich möchte Dateien per Batch Datei übertragen und danach automatisch löschen.
Wenn aber die FTP Verbindung nicht zustande kommt werden die Dateien trotzdem gelöscht.
Nun brauche ich eine Abfrage, ob die FTP Verbindung erfolgreich war und erst danach sollen die Dateien übertragen werden.
Wenn die Verbindung nicht erfolgreich war soll die Batch einfach beendet werden.

Hier kommt mein Code:

ftp -s:c:\FTP\TEST\ftp.txt test.de
echo %errorlevel%
IF %ERRORLEVEL% EQU 0 goto start
IF %ERRORLEVEL% GRT 0 goto end
:start
echo erfolgreich
goto quit
:end
echo fehler
:quit

In der ftp.txt stehen die Zugangsdaten für den FTP Server drin.
Die FTP Verbindung wird auch erfolgreich ausgeführt.
Aber egal ob den Netzwerkstecker ziehe (simuliert Serverausfall) oder ob es erfolgreich ist, es wird immer der Errorlevel 0 ausgegeben?

Habe auch schon viel gegoogelt und hier im Forum den Tipp mit den Errorleveln gefunden, aber komme jetzt einfach nicht mehr weiter.

Ich hoffe ihr könnt mir helfen.

Dankeschön!

LIebe Grüße
David
Mitglied: Skyemugen
28.01.2011 um 15:43 Uhr
Aloha,

als erstes wäre eine <code></code> Formatierung schön für's Auge ;) - als zweites (ohne mich jetzt in den Errorlevel hinein zu denken - ich mag damit nicht arbeiten) könntest du ja die ftp Anmeldung laufen lassen und dann per if exist eine bestimmte file suchen, wenn die gefunden wird, ist die Verbindung aktiv, wenn nicht - dann nicht.

greetz André
Bitte warten ..
Mitglied: miniversum
28.01.2011 um 16:34 Uhr
IF %ERRORLEVEL% GRT 0 goto end
Funktioniert nicht. GTR heist größer:
EQU - gleich
NEQ - nicht gleich
LSS - kleiner als
LEQ - kleiner als oder gleich
GTR - größer als
GEQ - größer als oder gleich
Bitte warten ..
Mitglied: 60730
28.01.2011 um 19:45 Uhr
moin,

01.
ftp -s:c:\FTP\TEST\ftp.txt test.de 
02.
echo %errorlevel% 
bedeutet im Klartext - rufe ftp.exe mit Parameter -s:c:\FTP\TEST\ftp.txt test.de auf.
Ergo nur wenn
  • ftp.exe
  • die Domain Test.de
  • oder die textdatei nicht gefunden wird, kommt ein anderer Errorlevel als 0 zurück.

Du mußt, wenn schon das Feedback von der FTP Session auslesen.
01.
ftp  -s:c:\FTP\TEST\ftp.txt>c:\FTP\TEST\ftpcheck.log 
02.
find "200 Type set to I" c:\FTP\TEST\ftpcheck.log && goto ok 
03.
 
04.
echo error 
05.
pause 
06.
:ok
Und die dazugehörige .txt
01.
open adresse 
02.
User 
03.
password 
04.
bin
Der Befehl "Bin" sorgt für das gesuchte 200 Type set to I und das gibt der FTP nicht zurück, wenn er hängt bzw. sollte man ja eh via bin übertragen.
Und man kann das noch ganz anders zimmern, aber so mache ich das.
Lass das einfach zweimal laufen und werte den Unterschied zwischen einer erfolgreichen und einer Übertragung mit Fehler aus.

Gruß
Bitte warten ..
Mitglied: -WeBu-
03.06.2011 um 20:02 Uhr
Ich hole diesen alten thread hoch, weil ich hier endlich die ersehnte Antwort von TimoBeil gelesen habe, daß ftp.exe einfach während einer fehlerhaften Übertragung innerhalb der Befehle von ftp.txt kein errorlevel ungleich 0 setzt.

Die Abfrage, ob der bin-Befehl gutging ("200 Type set to I"), ist ganz ok, aber ob dann auch die Übertragung gutging, weiß man nicht. Besser ist da die Abfrage auf "226 Transfer complete. Closing data connection." Für EINE Datei geht das, für mehrere nicht.

Aber, vielleicht könnte man überlegen, ob man eine komplette Übertragung per ftp.exe auch OHNE -s:ftp.txt hinbekommt. Wenn man einfach ALLES irgendwie auf eine Kommandozeile packt, also servername, user, passwort, local-file, server-file und wenn dann dabei irgendwas(!) schiefgeht, hat man (vielleicht) einen errorlevel, oder?

Wie aber bekommt man alles in einen ftp.exe-Aufruf?
Bitte warten ..
Mitglied: 60730
03.06.2011 um 21:02 Uhr
moin,

ganz einfach...
  • garnicht - oder besser/genauer (ich wüßte aus dem Stehgreif nicht wie)
...sondern anders.

  • bau dir ein Grundgerüst
User 
password 
bin
kopiere dieses Grundgerüst in einer Schleife zu einer temp. Datei
füge während der Schleife
cd ordner 
put xyz.suffix 
get abc.suffix
dazu und ein abschliessendes
quit
und schicke jede einzelne Datei / Ordner einzeln auf den FTP Server
  • oder suche nach "error /timeout"usw. in der "logdatei"
Nur weißt du dann wirklich nicht, wo es klemmt.

gruß
Am Montag bin ich wieder in der Windowswelt, vielleicht fällt mir ja doch noch was anderes ein.
Bitte warten ..
Mitglied: -WeBu-
03.06.2011 um 21:15 Uhr
Argh, das ist Aufwand.

Für meine eine Datei(!!) habe ich jetzt, wie erwähnt, deinen vorherigen Vorschlag abgewandelt und frage das ftpcheck.log genau auf das Vorhandensein von dem string "226 Transfer complete. Closing data connection." ab. Geht was schief, dann kommt dieser String nicht und ich lass mir per notepad sofort das log vorlegen, denn ich muss beim Übertragen einfach SOFORT wissen, ob alles geklappt hat und nicht erst einen Morgen später (per server-log-check o. ä.)

Bei der Gelegenheit habe ich einen bug bei strato festgestellt. Um auf Fehler zu checken, habe ich bei meinen Versuchen ans korrekte Passwort weitere Zeichen angehängt, ABER KEINEN FEHLER BEKOMMEN! Ein Strato-Server prüft offensichtlich zeichenweise und wenn genügend richtige Zeichen "da" sind, isser glücklich! Ich glaub das einfach nicht und ich wußte das auch nicht. Ist das bekannt?
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst Per FTP-Shell oder Batch in ein unbekanten Ordner wechseln (8)

Frage von Ducky2 zum Thema Batch & Shell ...

Linux Netzwerk
gelöst Verschlüsselung einer FTP-Verbindung testen (3)

Frage von Nasenbaer1968 zum Thema Linux Netzwerk ...

Batch & Shell
gelöst Mittels Batch jede Zeile einer Textdatei prüfen (4)

Frage von Peter32 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...