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

Articles connexes


ERREUR DE SOCKET: [Errno 111] Connexion refusée sur Ubuntu

Ankur Agarwal Traceback (most recent call last): s = smtplib.SMTP('localhost') File "/usr/lib/python2.7/smtplib.py", line 251, in __init__ (code, msg) = self.connect(host, port) File "/usr/lib/python2.7/smtplib.py", line 311, in connect self.soc

Connexion refusée en poussant une image de docker

Super frelon Je vais configurer un registre local en suivant https://docs.docker.com/registry/deploying/ . docker run -d -p 5000:5000 --restart=always --name reg ubuntu:16.04 Lorsque j'essaye d'exécuter la commande suivante: $ docker push localhost:5000/my-u

erreur de connexion refusée avec LDAP?

Mike : J'essaye d'exécuter le programme suivant: package jndi; import java.util.Hashtable; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.naming.directory.Attributes; import javax.naming.dir