[Python 2.7.13] ftp server existence test voor connectie

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Wilf
  • Registratie: Maart 2007
  • Niet online

Wilf

shuo cao cao

Topicstarter
In mijn script download ik van een server bestanden. Dit script werkte goed tot het ip-adres van mijn NAS veranderde. Logisch zou je zeggen maar het probleem is: Mijn complete script crasht. Dit gebeurt al voordat ik een connectie wil gaan leggen; de crash volgt nadat ftplib.FTP('mijn.ftp.adres') er achter komt dat het adres niet bestaat.

Hieronder excerpts uit mijn script en wat ik al heb geprobeerd (Googlen gaf nul resultaten, alleen maar checks of een file op de ftp-server bestaat maar niet of de server zélf bestaat):

Mijn eerste scriptversie (excerpt):

import ftplib

ftplocatie='mijn.ftp.adres'

ftp=ftplib.FTP(ftplocatie)

if 'login' in data:
try:
ftp.login()
except:
print("Login is niet gelukt")




In bovenstaand script ging alles goed behalve dus als er een niet-bestaande server ingevuld werd. Zelfs als ik de hele if-statement weghaalde (dus alleen ftp=ftplib.FTP() liet staan) of zelfs ftplocatie weghaalde en het adres direct tussen de haakjes van ftplib.FTP() zette dan liep het script vast.

Ik heb daarop geprobeerd een error af te vangen in ftplib:


import ftplib

ftplocatie='mijn.ftp.adres'

try:
ftp=ftplib.FTP(ftplocatie)
except ftplib.all_errors as e:
print(e)




Ook hier gaat het bij de try al fout; het script reageert gelijk niet meer, is nog een paar seconden open en verdwijnt dan, net zoals alle andere keren (allemaal te zien in taakbeheer, Win10).

Wat ik nu dus eigenlijk wil kunnen doen is voordat ik ftp declareer al een confirmatie dat de ftplocatie daadwerkelijk online is én een ftp-server draaiend heeft. Dit omdat bij zowel nonexistente IP's alsmede bestaande-maar-geen-ftp-IP's deze crash zich voordoet. Een simpele ping heeft dus geen zin en een inlogpoging faalt dus al voordat ik de ftp al declareer :X

Heeft iemand een goed idee behalve er voor zorgen dat de server altijd draait en het adres nooit verandert? Het script draait namelijk altijd op de achtergrond en dat wil ik graag zo houden.

Acties:
  • 0 Henk 'm!

  • Wilf
  • Registratie: Maart 2007
  • Niet online

Wilf

shuo cao cao

Topicstarter
Zo jammer dit soort momenten, zodra je er voor gaat zitten om een topic te typen kom je zelf tot je eigen antwoord.

Het antwoord:

De try was inderdaad nodig voor het declareren voor ftp. Zonder de try crasht het script.

Mét de try was ik vergeten de 'e' om te zetten naar een string. Nu ik er een string van heb gemaakt werkt het weer naar behoren.