Comment puis-je effectuer un ping ou traceroute à l'aide de code python?
Je voudrais être en mesure d'effectuer un ping et traceroute de l'intérieur Python sans avoir à exécuter le correspondant de commandes du shell donc je préfère le natif python solution.
OriginalL'auteur Dave Forgac | 2009-07-20
Vous devez vous connecter pour publier un commentaire.
L'exécution des interprètes comme racine est souvent mal vu pour des raisons de sécurité (et bien sûr, vous avez besoin de la racine de l'autorisation d'accès au "raw" cogné comme nécessaire par l'ICMP spécifications de ping et traceroute!), mais si vous n'avez pas de problèmes avec qui il n'est pas difficile-par exemple, ce post donne une pratique de ping, et Jeremy Hylton la vieille page a encore utilisable code sous-jacent pour le protocole ICMP (à la fois de ping et traceroute), même si c'est écrit pour les très vieilles versions de Python et a besoin d'un petit lifting à briller avec les modernes -- mais, les concepts SONT tous là, à la fois les Url que je vous ai donné!
ce n'est pas compatible avec les commandes ping et traceroute: si vos homologues de soutien UDP échos, ces pseudo-ping et traceroute les versions de travail, mais, sans ICMP, vous êtes à l'extérieur de la norme, et vos chèques peuvent parfaitement bien fail (sans contrepartie le respect au-delà des normes) où la norme basée sur ICMP approches de travail.
Merci. Je crois que je vais revenir pour essayer ceci à l'aide des commandes du shell. Nouvelle question à ce sujet ici: stackoverflow.com/questions/1151897/...
les bombardements de la setuid-root commandes est généralement la meilleure façon, oui -- lemme regardez votre autre question maintenant.
Les deux liens sont de donner à une erreur 404 maintenant, pour faire de ce lien seule réponse inutile.
OriginalL'auteur Alex Martelli
Si vous n'avez pas l'esprit à l'aide d'un module externe et de ne pas utiliser UDP ou TCP, scapy est une solution facile:
Ou vous pouvez utiliser la version tcp
Veuillez noter que vous devrez exécuter scapy en tant que root pour être en mesure d'effectuer ces tâches et vous obtiendrez:
OriginalL'auteur Andre de Miranda
La Webb Bibliothèque est très pratique dans l'exercice de toutes sortes de web connexes extraits...et ping et traceroute peut être fait facilement à travers elle. Il suffit d'inclure l'URL que vous souhaitez traceroute:
Si vous souhaitez stocker les traceroute journal dans un fichier texte automatiquement, utilisez la commande suivante:
De même, une adresse IP de l'URl (serveur) peuvent être obtenus avec les lignes de code suivantes:
Espère que cela aide!
OriginalL'auteur hnvasa
vous pourriez vouloir vérifier la scapy paquet. c'est le couteau suisse des outils de réseau pour python.
OriginalL'auteur Autoplectic
Ping ICMP est la norme dans le cadre du protocole ICMP.
Traceroute utilise les fonctionnalités du protocole ICMP et IP pour déterminer un chemin d'accès via le Temps De Vivre les valeurs. TTL à l'aide de valeurs, vous pouvez faire des traceroutes dans une variété de protocoles tant que IP/ICMP, parce que c'est la ICMP TTL EXceeded les messages que vous dire sur le tronçon de la voie.
Si vous tentez d'accéder à un port où aucun port d'écoute est disponible, par protocole ICMP règles, l'hôte est censé envoyer une requête ICMP Port Unreachable message.
OriginalL'auteur Dougie
J'ai écrit un simple tcptraceroute en python qui n'a pas besoin des privilèges root http://www.thomas-guettler.de/scripts/tcptraceroute.py.txt
Mais il ne peut pas afficher les adresses IP de l'intermédiaire de houblon. Mais parfois, il est utile, car vous pouvez le deviner d'où le blocage du pare-feu est: Soit au début ou à la fin de la route.
OriginalL'auteur guettli
La mtrpacket paquet peut être utilisé pour envoyer du réseau de sondes, qui peut effectuer un ping ou un traceroute. Comme il utilise le back-end de la mtr en ligne de commande de l'outil, il ne nécessite pas que votre script de s'exécuter en tant que root.
Il utilise également asyncio de la boucle d'événements, de sorte que vous pouvez avoir plusieurs cours traceroutes ou pings simultanément, et de traiter leurs résultats à la fin.
Voici un script Python pour la commande traceroute pour 'example.com':
La boucle avec " ttl "est utilisé parce que le " time-to-live' de l'expédition d'un paquet détermine le nombre de réseau de houblon le paquet de voyage avant l'expiration et l'envoi d'une erreur à la source originale.
OriginalL'auteur mkimball