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

Überprüfen eines FTP-Verzeichnisses ob Ordner vorhanden ist

Frage Entwicklung Batch & Shell

Mitglied: hansbaer

hansbaer (Level 1) - Jetzt verbinden

15.04.2014 um 17:34 Uhr, 3252 Aufrufe, 1 Kommentar

Hallo mal wieder,

ich möchte gerne mit hilfe einer batch überprüfen, ob auf einem FTP Server ein bestimmtes Verzeichnis vorhanden ist.
So Sachen wie "if exist", etc kann ich ja bei ftp Protokoll nicht verwenden, oder?

Beste Grüße,

hansbaer
Mitglied: colinardo
15.04.2014, aktualisiert 16.04.2014
Hallo hansbaer,
mit Batch müsstest du die Ausgabe von ftp mit findstr auf den Return-Code vom cd-Befehl hin durchsuchen. Das könnte so aussehen:
01.
@echo off 
02.
set FTPSERVER=ftp.deinserver.de 
03.
set FTPUSER=USERNAME 
04.
set FTPPASS=PASSWORD 
05.
set ORDNER=/pfad/abc/deinordner 
06.
 
07.
set "commandfile=%temp%\remotecommands.txt" 
08.
 
09.
echo open %FTPSERVER%>"%commandfile%" 
10.
echo %FTPUSER%>>"%commandfile%" 
11.
echo %FTPPASS%>>"%commandfile%" 
12.
echo cd %ORDNER%>>"%commandfile%" 
13.
echo quit>>"%commandfile%" 
14.
 
15.
ftp -i -s:"%commandfile%" | findstr /b "550" >nul && goto EXISTIERTNICHT || goto EXISTIERT 
16.
 
17.
:EXISTIERTNICHT 
18.
echo Ordner existiert nicht  
19.
goto weiter 
20.
 
21.
:EXISTIERT 
22.
echo Ordner existiert 
23.
 
24.
:weiter 
25.
del /q "%commandfile%" 2>nul 
26.
 
Alternativ ein Script mit AutoIT als Konsolenanwendung kompiliert und du hast auch eine Lösung (Server und Zugangsdaten ab Zeile 6 eintragen)
Genutzt wird das kompilierte Programm dann so
check_ftp.exe "/pfad/zum/Ordner"
Als Parameter gibt man den Pfad zum Ordner an welchen du auf Vorhandensein überprüfen willst (ohne abschließenden Slash).
Es gibt dann als Exit-Code eine 0 aus wenn es den Ordner gefunden hat und eine 1 wenn nicht, bei einem anderen Fehler eine 2.
AutoIt-Console-Script zum testen ob ein FTP-Ordner existiert
01.
#NoTrayIcon 
02.
#Region ;**** Directives created by AutoIt3Wrapper_GUI **** 
03.
#AutoIt3Wrapper_Change2CUI=y 
04.
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** 
05.
#include <FTPEx.au3> 
06.
Const $FTPSERVER = "ftp.domain.de" 
07.
Const $USERNAME = "USERNAME" 
08.
Const $PASSWORD = "PASSWORD" 
09.
 
10.
global $ftppath,$folder,$found 
11.
if $cmdline[0] = 1 then 
12.
		$arr = StringRegExp($cmdline[1],"^(.*)/(.*)$",3) 
13.
		if UBound($arr) < 1 then 
14.
			ConsoleWriteError("Fehler - Der FTP-Pfad sollte immer mit eine Slash '/' beginnen") 
15.
			Exit 2 
16.
		EndIf 
17.
		$ftppath = $arr[0] 
18.
		$folder = $arr[1] 
19.
Else 
20.
	ConsoleWriteError("Fehler - Fehlender FTP-Pfad als erster Parameter!") 
21.
	exit 2 
22.
EndIf 
23.
 
24.
$open = _FTP_Open("FTP-Connection") 
25.
if $open = 0 then 
26.
	ConsoleWriteError("Fehler - Keine Internetverbindung.") 
27.
	exit 2 
28.
endif 
29.
 
30.
$conn = _FTP_Connect($open,$FTPSERVER,$USERNAME,$PASSWORD) 
31.
if $conn = 0 then 
32.
	ConsoleWriteError("Fehler - Konnte die FTP-Verbindung nicht aufbauen") 
33.
	_FTP_Close($conn) 
34.
	exit 2 
35.
EndIf 
36.
if $ftppath <> "" then 
37.
	$ret = _FTP_DirSetCurrent($conn,$ftppath) 
38.
	if $ret = 0 then 
39.
		ConsoleWriteError("Fehler - Konnte nicht in das angegebene Verzeichnis wechseln ") 
40.
		_FTP_Close($conn) 
41.
		exit 2 
42.
	EndIf 
43.
endif 
44.
 
45.
$dirArray = _FTP_ListToArray($conn,1) 
46.
_FTP_Close($conn) 
47.
 
48.
if $dirArray[0] > 0 then 
49.
	for $i = 1 to $dirArray[0] 
50.
		if $dirArray[$i] = $folder then 
51.
			$found = true 
52.
			exitloop 
53.
		endif 
54.
	Next 
55.
EndIf 
56.
 
57.
if $found then 
58.
	ConsoleWrite("GEFUNDEN: '" & $cmdline[1]) 
59.
	exit 0 
60.
Else 
61.
	ConsoleWrite("NICHT GEFUNDEN: '" & $cmdline[1]) 
62.
	exit 1 
63.
Endif
Noch eine Möglichkeit ist es die Library von WINSCP zu nutzen (die unterstützt auch SFTP/FTPS SSH Verbindungen), und das z.B. so mit Powershell prüfen ob ein Ordner existiert:
Mit Powershell und der WinSCP .NET-Library überprüfen ob ein FTP-Ordner existiert
01.
[Reflection.Assembly]::LoadFrom("C:\WinSCPnet.dll") 
02.
$sessionOptions = New-Object WinSCP.SessionOptions 
03.
$sessionOptions.Protocol = [WinSCP.Protocol]::Ftp 
04.
$sessionOptions.HostName = "ftp.domain.de" 
05.
$sessionOptions.UserName = "USERNAME" 
06.
$sessionOptions.Password = "PASSWORD" 
07.
$session = New-Object WinSCP.Session 
08.
try{ 
09.
    $session.Open($sessionOptions) 
10.
    $exists = $session.FileExists("/Pfad/testOrdner") 
11.
    if ($exists){ 
12.
      write-host "Ordner existiert" 
13.
    }else{ 
14.
      write-host "Ordner konnte nicht gefunden werden" 
15.
16.
17.
finally{ 
18.
    $session.Dispose()     
19.
}
Hierzu benötigt man das .NET-Assembly(.dll) und die EXE von WinSCP die man hier herunterladen kann: http://winscp.net/eng/download.php
Diese sollten dann zusammen im selben Verzeichnis liegen.

Grüße Uwe
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
überprüfen ob 3 Ordner in den jeweiligen Unterordnern existieren (2)

Frage von functionstrut zum Thema Batch & Shell ...

Batch & Shell
gelöst Per FTP-Shell oder Batch in ein unbekanten Ordner wechseln (8)

Frage von Ducky2 zum Thema Batch & Shell ...

Batch & Shell
Ordner inkl. Unterordner nach Dateien überprüfen (4)

Frage von belfry zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (29)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (20)

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

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...