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
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.
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

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.