Bonjour,
Voilà j'aimerai vérifier si l'user ne me raconte pas des cracks lorsqu'il me donne une adresse IP (ou un nom de domaine).
Bonjour,
Voilà j'aimerai vérifier si l'user ne me raconte pas des cracks lorsqu'il me donne une adresse IP (ou un nom de domaine).
Un petit ping devrait suffire
http://svn.pylucid.net/pylucid/CodeSnippets/ping.py
Je n'ai absolument pas testé le lien ci dessus, mais on peut tjs espérer![]()
le probleme du ping c'est que beaucoup de serveur utilise leur firewall pour que le ping ne reponde pas.
Si le ping ne convient pas, il faudra te plier à un protocole accepté.
Pour quel genre de service as-tu besoin de ces adresses ?
Si c'est mail, vois du côté de pop/imap voire smtp. Mais ici encore, ce n'est pas tjs disponible.
Si c'est http, une petite requete HEAD sur le port 80 devrait suffire
etc... à chaque service son truc.
Tu peux aussi utiliser socket.gethostbyname, qui te renvoie l'adresse IP selon un nom "human-readable", et lève une gaierror s'il ne peut pas trouver l'hôte.
Enfin j'ai testé, mais j'ai des drôles de trucs quand même :p
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 In [1]: import socket In [2]: socket.gethostbyname("sdfsdf.zerozier") Out[2]: '67.215.65.132' In [3]: socket.gethostbyname("sdfsdf.zerozierc") Out[3]: '67.215.65.132' In [4]: socket.gethostbyname("google.be") Out[4]: '209.85.229.104' In [5]: socket.gethostbyname("google.com") Out[5]: '74.125.45.100' In [6]: socket.gethostbyname("efddnf ekjezzef") --------------------------------------------------------------------------- gaierror Traceback (most recent call last) C:\Windows\system32\<ipython console> in <module>() gaierror: [Errno 11001] getaddrinfo failed
Bonjour,
Le but sera de se connecter a une base MySQL, mon probleme est que j'utilise python-mysql et que j'arrive pas a gerer les exceptions convenablement (j'ai bien vu qu'une erreur etait levee lorsque l'hote n'existait pas, une autre que le couple login/mdp n'est pas bon ect) mais j'arrive pas a les intercepter :/
Fais voir un bout de code qui lance une erreur, et montre aussi un traceback d'une de ces erreurs, on pourra sans doute aller plus loin
Aussi, si tu as le lien vers ce package pour MySQL... non seulement ça m'intéresse, mais en plus ça permettrait de trouver l'erreur plus facilement
Le fait est que toutes les exceptions ne découlent (hélas) pas de BaseException (ou Exception dans Python < 2.5). socket.error est un bel exemple.
Sur le site de MySQL dans la section d'intégration avec python, ca semble vide.
J'ai trouve le projet MySQL for Python qui est d'une simplicité absolue.
Je vais le reinstaller sur ma machine (tout est sur la machine du travail) et donner des exemples de code et les traceback. (j'edite d'ici une dizaine de minute).
merci de m'aider![]()
Hello,
Dsl du retard, quelques petit problème a l'installation (au fait il est dans les paquets debian si besoins).
Bon, un petit exemple simple:
mon but est de captuer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 >>> import MySQLdb >>> >>> #Connexion correcte >>> connexion = MySQLdb.connect('127.0.0.1', 'root', 'titi') >>> >>> #Connexion avec une adresse inexistane >>> badadress = MySQLdb.connect('512.0.0.1', 'root', 'toto') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/var/lib/python-support/python2.5/MySQLdb/__init__.py", line 74, in Connect return Connection(*args, **kwargs) File "/var/lib/python-support/python2.5/MySQLdb/connections.py", line 170, in __init__ super(Connection, self).__init__(*args, **kwargs2) _mysql_exceptions.OperationalError: (2005, "Unknown MySQL server host '512.0.0.1' (3)") >>> >>> #connexion avec un mauvais mots de passe >>> badpassword = MySQLdb.connect('127.0.0.1', 'root', 'toto') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/var/lib/python-support/python2.5/MySQLdb/__init__.py", line 74, in Connect return Connection(*args, **kwargs) File "/var/lib/python-support/python2.5/MySQLdb/connections.py", line 170, in __init__ super(Connection, self).__init__(*args, **kwargs2) _mysql_exceptions.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)") >>>
_mysql_exceptions.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
toutes les autres erreurs de connexion je m'en fiche pas mal.
Essaye ceci, ça devrait fonctionner
Et visiblement, le code d'erreur qui indique qu'un serveur est inexistant est le 2005
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 try: # Ton code... except _mysql_exceptions.OperationalError, e: # gère l'exception![]()
EDIT://
Oui ca correspond bien a ce que j'ai pu essayer mais:
EDIT bis://
Code : Sélectionner tout - Visualiser dans une fenêtre à part NameError: global name '_mysql_exceptions' is not defined
import _mysql_exceptions regle le probleme![]()
Le "e" pourrait être défini comme "le nom donné à la variable qui contiendra l'exception".
"e" (ou quoi que soit le nom que tu lui as donné donc) contient l'exception en elle-même. Cette exception possède des attributs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 try: raise ValueError("Just for fun") except ValueError, e: # "e", ou "zglabalabardan" si tu préfères print repr(e)
Et il y a fort à croire que l'OperationalException possède un attribut / une méthode qui permet de récupérer le code d'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part print dir(e)
Bonjour et merci de ta reponse, j'ai neanmoins edite mon poste du dessus car je ne te voyais pas en ligne
EDIT://
Merci des explications, tout fonctionne beaucoup mieu![]()
Partager