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

Ü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, 3755 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 ..
Ähnliche Inhalte
Batch & Shell
Vor dem Verzeichniss erstellen überprüfen ob Ordner vorhanden sind
Frage von TommylikBatch & Shell12 Kommentare

Hallo, Ich habe mir folgendes geschrieben: Funktioniert ohne Probleme. Es wird immer das Laufwerk D genutzt. Könnte mir einer ...

Batch & Shell
FTP-SSL Synchronisation bestimmter Ordner bzw. Verzeichnisse
Frage von BlattlausOGBatch & Shell4 Kommentare

Guten Abend, seit Tagen suche ich per Google nach Lösungsansätze wie zwei FTP-Server via Batchscript synchronisiert werden können, schlussendlich ...

Batch & Shell
Batch-Datei soll überprüfen ob ein Verzeichnis vorhanden ist
gelöst Frage von synapsenstauBatch & Shell7 Kommentare

Moin, wie bringe ich bitte einer Batch-Datei bei, das sie "schaut" ob ein Verzeichnis vorhanden ist und wenn nicht ...

Batch & Shell
Batch: Ordner auf Datei überprüfen
gelöst Frage von donmanolitoBatch & Shell4 Kommentare

Hallo Ich suche eine Möglichkeit alle Ordnernamen eines Verzeichnisses in eine Variable zu schieben um dann per Schleife ein ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 3 StundenBatch & Shell1 Kommentar

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 5 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 20 StundenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 21 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Server-Hardware
Braucht ein Server eine Grafikkarte?
gelöst Frage von lcer00Server-Hardware14 Kommentare

Hallo zusammen, habe gerade 3 Stunden gebraucht, um herauszubekommen, dass die Remotemanagement-Console von Intel (RMM4) nur funktioniert, wenn die ...

Linux
OpenSource Groupware
Frage von FA-jkaLinux13 Kommentare

Hallo, ich suche eine Groupware als Alternative zum Exchange. Wesentliche Aufgaben sind die Handhabung von E-Mails (persönliche und gemeinsam ...