Comment puis-je effectuer un ping ou traceroute en python, l'accès à la sortie, car il est fabriqué?

Plus tôt, j'ai posé cette question:

Comment puis-je effectuer un ping ou traceroute à l'aide de code python?

Cependant parce que python n'est pas exécuté en tant que root, il se complique pas la capacité d'ouvrir les raw ICMP sockets nécessaires pour exécuter la commande ping/traceroute en natif python.

Cela me ramène à l'aide du système de ping/traceroute des commandes shell. Cette question a un couple d'exemples qui utilisent la subprocess module qui semblent bien fonctionner:

Ping sur un site en Python?

J'ai toujours un plus d'exigence bien: j'ai besoin d'être en mesure d'accéder à la sortie qu'elle est produite (par exemple. pour un long exécutant la commande traceroute.)

Les exemples ci-dessus exécutez la commande shell, puis seulement vous donner accès à la totalité de sortie une fois que la commande est terminée. Est-il un moyen d'accéder à la sortie de la commande qu'elle est produite?

Edit: Basé sur Alex Martelli réponse, voici ce qui a fonctionné:

import pexpect

child = pexpect.spawn('ping -c 5 www.google.com')

while 1:
        line = child.readline()
        if not line: break
        print line,
InformationsquelleAutor Dave Forgac | 2009-07-20