zingo
Goto Top

Per Batchscript FTP Server überprüfen ob Online

Hallo erstmal,

ich benötige ein Script, mit dem man überprüft ob eine FTP-Adresse Online ist oder nicht!

Bis jetzt habe folgendes getestet aber keinen Erfolg gehabt,
bzw. Bleibt das Script hängen.


Beginn Script

echo *FTP_TEST* >> C:\iplog.txt

echo Zeitstempel >> C:\iplog.txt
time /t >> C:\iplog.txt
date /t >> C:\iplog.txt
ftp -n xxx.xxx.xxx.xxx >> C:\iplog.txt

if errorlevel goto yes >> C:\iplog.txt


:yes
echo Verbindung erfolgreich! >> C:\iplog.txt


goto ende

:no
echo Fehler! >> C:\iplog.txt

goto ende

:ende

echo *FTP_TEST_Ende* >> C:\iplog.txt

Script Ende

Content-Key: 19336

Url: https://administrator.de/contentid/19336

Ausgedruckt am: 28.03.2024 um 22:03 Uhr

Mitglied: Biber
Biber 09.11.2005 um 11:12:38 Uhr
Goto Top
Moin zingo,

der Fehler steckt in der Errorlevelauswertung. Lies dazu noch mal unter der Hilfe nach (z.B. mit "IF /?" vom CMD-Prompt).
Beispiel:
FTP.....(whatever)
::Danach IST ein ERRORLEVEL-Wert gesetzt ...
::ERRORLEVEL 0 ...alles prima, Success, OK
::ERRORLEVEL > 0 ....Fehler... und den Fall immer zuerst prüfen!!!
:: Weil: So, wie es implementiert ist vom M$, heißt die z.B. Prüfung "IF %ERRORLEVEL%== 1" übersetzt:
:: "wenn der Errorlevel mindestens 1 oder größer ist..."
::... und Errorlevel ist entsprechend immer 0 oder größer... logisch, kann ja nicht negativ werden

:: if errorlevel goto yes >> C:\iplog.txt ... ungültige Syntax... numerischer Wert für Errorlevel fehlt

richtiger:
if errorlevel 1 goto no
:: ??????????? >> C:\iplog.txt was willst Du denn hier umleiten???????? Die Prüfung??
:yes keinFehler
echo Verbindung erfolgreich! >> C:\iplog.txt
goto ende
:no
echo Fehler! >> C:\iplog.txt
:ende
..

HTH Biber
Mitglied: zingo
zingo 09.11.2005 um 14:01:43 Uhr
Goto Top
Hy,
habe das mit der Fehlermeldung hinbekommen, aber wenn ich eine FTP Adresse eingebe die definitiv nicht vorhanden ist.
Bekomme ich diese Fehlermeldung:

___________________________
::Begin script:

C:\>echo *FTP_TEST* 1>>C:\Ean-Out\log\iplog.txt

C:\>echo.


C:\>echo Zeitstempel 1>>C:\Ean-Out\log\iplog.txt

C:\>time /t 1>>C:\Ean-Out\log\iplog.txt

C:\>date /t 1>>C:\Ean-Out\log\iplog.txt

C:\>ftp -n 172.24.3.2
FTP: connect :Unbekannte Fehlernummer
ftp> quit

C:\>if errorlevel 0 goto yes

C:\>echo Verbindung erfolgreich! 1>>C:\Ean-Out\log\iplog.txt

C:\>echo.


C:\>goto ende

C:\>echo.


C:\>echo *FTP_TEST_Ende* 1>>C:\Ean-Out\log\iplog.txt

C:\>pause
Drücken Sie eine beliebige Taste . . .

____________________________________
::Script ende

Außerdem muss ich quit per Hand eingeben!!!

Gruß Zingo
Mitglied: Biber
Biber 09.11.2005 um 14:29:59 Uhr
Goto Top
Na ja, zingo,
Du kannst doch, bevor Du Dich gleich mit dem FTP-Server verbindest, erstmal per Ping prüfen, ob der da ist. Geht doch eh schneller...
..
Set "OnLine=Nein"
call :perform 172.24.3.2
--
goto whereever
:
:Perform
::kein FTP.exe-Aufruf, wenn es den Server nicht gibt/der nicht antwortet
ftp -n %1
IF ERRORLEVEL 1 (call :FTPErrorhandling %1) & goto :eof
set "OnLine=Ja"
goto :eof
...

Dann stellt sich die Frage mit dem "quit" gar nicht.
HTH Biber
Mitglied: zingo
zingo 09.11.2005 um 16:14:08 Uhr
Goto Top
Hallo Biber

Das war meine erste überlegung.
Aber was ist wenn der FTP Server kein ICMP aktiviert hat
und daraufhin keine Antwort kommt?

Gruß Zingo
Mitglied: Biber
Biber 09.11.2005 um 16:42:31 Uhr
Goto Top
Stimmt, zingo,

da hast Du recht.
Dann streich das mit dem Ping und füttere die FTP.Exe mit einer Eingabe-Datei. So wie Du es beim Login ja wahrscheinlich auch machst.

Da, wo in Deiner zweiten Variante (vor meinem Ping-Irrweg) ein
ftp -n 172.24.3.2 ... steht, schreib statt dessen:

echo quit>%temp%\quit.txt
ftp -s:%temp%\quit.txt -n 172.24.3.2
IF ERRORLEVEL 1 ......

hope that fits better
Biber
Mitglied: zingo
zingo 09.11.2005 um 18:12:05 Uhr
Goto Top
Hallo Biber,

es hat geklappt!
Läuft!

Jetzt kommt das nächste Problem:

Wenn ich den FTP Befehl mit IP Adresse eingebe, mache ich ja keinen Fehler wenn die IP Adresse falsch ist !!!

Also wenn ich eine IP Adresse eingebe die gar nicht existiert, dann ist es ja eigentlich kein Fehler! Oder ?
Denn der FTP Client startet und beendet ja Fehlerfrei wenn die IP Adresse nicht stimmt.
Was kann ich demnach tun?

Wenn ich die FTP-Anwahl in eine Datei schreibe und danach in der Datei nach dem Wort Connect oder Verbindung suche und dann die Variablen übergebe.
z.b.

ftp -s:%temp%\quit.txt -n 172.24.3.2 >> c:\connect.txt


:yes
echo Erfolg! >> c:\log.txt

usw.
Mitglied: Biber
Biber 09.11.2005 um 18:39:17 Uhr
Goto Top
Sinnngemäß ja...

Gut:
ftp -s:%temp%\quit.txt -n 172.24.3.2 >> c:\connect.txt
besser:
ftp -s:%temp%\quit.txt -n 172.24.3.2 > c:\connect.txt
(neu schreiben statt anfügen, sonst steht natürlich immer ein "Verbindung" drin früher oder später.)

Gut gemeint:

Besser, weil es funktioniert:
:yes
echo blah
goto :eof

:no
...
:: und die *.log's natürlich nicht auf C:\ packen, sondern nach %temp% oder so..

Hast Glück gehabt, hab deinem Kommentar bewertet vor dem zweiten Hinsehen face-wink
Schönen Abend
Biber
Mitglied: zingo
zingo 10.11.2005 um 09:05:10 Uhr
Goto Top
Hallo Biber,

klappt alles Super!
Danke nochmal und schönen Tag!

Gruß Zingo