Comment gérer les exceptions de "connexion refusée" de socket en Python?
suédois
J'apprends juste le python et je n'ai aucune question ici. Ce que je veux faire, c'est boucler les adresses IP données (192.168.43.215 à .218) et exécuter les commandes données. Le premier hôte fonctionne comme il peut se connecter, tandis que le second (.216) ne peut pas être connecté, puis le script se termine avec une erreur "socket.error: [Errno 111] Connection refusée".
Je ne veux pas qu'il quitte le script, mais qu'il continue de fonctionner sur les hôtes restants. Alors, comment gérer cette exception pour maintenir la boucle for en cours d'exécution?
#!/usr/bin/python
import socket
import sys
usernames = ["root", "admin", "robot", "email"]
for host in range(215,218):
ipaddress = "192.168.43." + str(host)
print ipaddress
# Create a socket
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(10)
# Connect to the server
connect=s.connect((ipaddress,25))
# Receieve the banner
banner=s.recv(1024)
print banner
for x in usernames:
# Verify a user
s.send('VRFY ' + x + '\r\n')
result=s.recv(1024)
print result
# Close the socket
s.close()
print "All hosts completed."
citron
On dirait que vous avez juste besoin d'une gestion d'erreur de base avec un bloc try / except :
try:
# run dangerous operation
except TheExceptionThatCouldBeTriggered:
print("An exception was triggered... continuing")
else:
# do other stuff if dangerous operation succeeded
Dans votre cas, vous voulez except socket.error