OVH Cloud OVH Cloud

Ping python multithread

7 réponses
Avatar
Yobogs
Bonjour,

Je dois dev un petit système qui ping quelques machine de mon parc
informatique à interval regulier et on m'a orienté vers le
multithreading de python...
Mais bon j'avoue que python j'ai pas trop trop touché jusqu'à présent
donc il me reste plus qu'à my mettre ;)

Connaitriez vous des script du style ou au moins qui me donnent un
aperçu de la gestion multitache sous python ?

D'avance Merci

7 réponses

Avatar
F. Petitjean
On Wed, 22 Dec 2004 18:01:30 +0100, Yobogs wrote:
Bonjour,

Je dois dev un petit système qui ping quelques machine de mon parc
informatique à interval regulier et on m'a orienté vers le
multithreading de python...
Et pourquoi donc s'embarquer dans ce genre de complications ? Il y a

vraiment des milliers de machines et on veut un résultat vrai tous les
dixièmes de secondes ?
Mais bon j'avoue que python j'ai pas trop trop touché jusqu'à présent
donc il me reste plus qu'à my mettre ;)

Connaitriez vous des script du style ou au moins qui me donnent un
aperçu de la gestion multitache sous python ?
Quels sont les systèmes d'exploitation ? Y-a-t-il une caommande ping ?

paramétrable ? Avec le module subprocess de python 2.4 c'est très facile
d'envoyer une commande et d'obtenir le code retour et les sorties
(stdout et stderr combinées).
en combinant avec un time.sleep() raisonnable (minute(s)) vous devriez y
arriver.

D'avance Merci


Avatar
Marco
http://python.org/doc/2.4/lib/module-thread.html
avec
http://python.org/doc/2.4/lib/module-socket.html

tu pourra faire ton script.

tu creer ta fonction threadé et a chaque fois que tu en a besoin
tu fait un

du genre

def ping(ip):
# ta fonction
start_new_thread(ping,["192.168.02.01"])
start_new_thread(ping,["192.168.02.02"])

Enfin je suis un bricoleur...

Et je me demandé le ping traditionnel qu'on fait avec la commande "ping"
elle envoi des packet particulier? sur quel port? en TCP ?

;) Aussi non dans la doc ADA ya un exemple complet du ping pong
multitheadé si ça t'intersse..(C'etait ma petit parenthese sur ADA : un
language fait pour ce torde les boyaux de la tete)..

@+
Avatar
Yobogs
C'est super sympa, merci pour l'aide, je vais regarder ça

http://python.org/doc/2.4/lib/module-thread.html
avec
http://python.org/doc/2.4/lib/module-socket.html

tu pourra faire ton script.

tu creer ta fonction threadé et a chaque fois que tu en a besoin
tu fait un

du genre

def ping(ip):
# ta fonction
start_new_thread(ping,["192.168.02.01"])
start_new_thread(ping,["192.168.02.02"])

Enfin je suis un bricoleur...

Et je me demandé le ping traditionnel qu'on fait avec la commande "ping"
elle envoi des packet particulier? sur quel port? en TCP ?

;) Aussi non dans la doc ADA ya un exemple complet du ping pong
multitheadé si ça t'intersse..(C'etait ma petit parenthese sur ADA : un
language fait pour ce torde les boyaux de la tete)..

@+


Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonsoir !

Voici un petit script, non-multithreadé, mais qui réalise une série de PING,
avec un intervalle de 66 secondes :


import os,time

def cping(adresse):
os.chdir('c:')
a = os.popen('ping '+adresse+' -n 1 -w 500')
chaine=a.read()
a.close()
if chaine.find('TTL')>1:
return(adresse+' :
'+chaine[chaine.find('temps')+5:chaine.find('TTL')-1])
else:
return(adresse+' : pas de reponse')

while(1):
print cping('127.0.0.1')
print cping('192.168.1.9')
print cping('wanadoo.fr')
time.sleep(66)



Il fonctionne sous windows en français ; chaque ping attend 500 ms maximum.
Pour arrêter le script : Ctrl-C

Faire ça en multithread ne pose pas de soucis (à condition de sérialiser les
pings dans un seul thread), mais je ne vois gère l'intérêt.

@-salutations
--
Michel Claveau
Avatar
Isidore Ducasse
Michel Claveau - abstraction méta-galactique non triviale en fuite
perpétuelle. wrote:

def cping(adresse):
os.chdir('c:')


Houla, ca a pas l'air bien portable...

Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonsoir !

Ce n'est pas portable. Comme je l'ai précisé, c'est fait sous windows, et
pour windows français.

Ca ne fonctionnera pas, ni sous Linux, ni sous Mac-OS, ni sous Amiga OS, ni
sous BSD, ni sous Palm OS, ni sous Solaris, ni sur un ZX-81, ni, même, sous
un windows anglais.

Mais :
- on est en France
- je n'ai que ça pour tester
- le script était déjà prêt
- le 'chdir' n'est obligatoire que pour certaines configurations
- le script peut facilement être adaptable à d'autres O.S.

D'ailleurs, tu pourrais réaliser ce dernier point. Ce serait intéressant de
voir les différences :-)

Bonne soirée
--
Michel Claveau
Avatar
guignot
Yobogs wrote:

Bonjour,

Je dois dev un petit système qui ping quelques machine de mon parc
informatique à interval regulier et on m'a orienté vers le
multithreading de python...
Mais bon j'avoue que python j'ai pas trop trop touché jusqu'à présent
donc il me reste plus qu'à my mettre ;)

Connaitriez vous des script du style ou au moins qui me donnent un
aperçu de la gestion multitache sous python ?

D'avance Merci