lmsf Postado Novembro 20, 2006 Denunciar Share Postado Novembro 20, 2006 Olá pessoal.Hoje trago à discussao um problema que tenho sobre o seginte:Imaginem uma thread que executa o comando PING de 2 em 2 segundos.Agora imaginem que a maquina à qual desejo fazer o ping esta acessivel. Tudo bem até aqui.Coloco o script a correr e de sguida posso verificar que a thread envia: 2 pacotes enviados, 2 pacotes recebidosDe seguida faco um reset à maquina. Aqui comecam os problemas!!!Quando a maquina fica incessivel, a thread bloqueia e so torna a responder quando a maquina fica acessivel.Ora, pelo que percebi, o comando PING deveria exibir: 2 pacotes enviados, 0 pacotes recebidos.Será que alguém me poderia ajudar?Obrigado.Codigo:import osimport reimport timeimport datetimeimport sysfrom threading import Threadclass CheckPingBladeStatus(Thread): "Threading example" def __init__ (self, ip): Thread.__init__(self) self.keepGoing = True self.transmitted = 0 self.received = 0 self.ip = ip self.status = 0 self.downTime = None def run(self): while 1: result = os.popen("ping -que -c2 -w3 " + self.ip) cmd = result.readlines() print cmd def stop(self): self.keepGoing = False def getLastBytesTransmitted(self): return self.transmitted def getLastBytesReceived(self): return self.received def printStatus(self): print datetime.datetime.now()," => Transmitted: ",current.getLastBytesTransmitted()," Received: ",current.getLastBytesReceived() def clearValues(self): self.status = -1 self.downTime = 0CheckPingBladeStatus.lifeline = re.compile("(\d+) packets transmitted, (\d+) received, (\d+)%")#start a new threadcurrent = CheckPingBladeStatus("10.50.38.161") # TA16current.start() Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kakao Postado Novembro 20, 2006 Denunciar Share Postado Novembro 20, 2006 Eu acho que você vai ter mais sucesso com este problema na lista do python:http://br.groups.yahoo.com/group/python-brasil/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Novembro 20, 2006 Denunciar Share Postado Novembro 20, 2006 Qual o SO utilizado? O que significam estes parâmetros passados para o ping?Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 lmsf Postado Novembro 21, 2006 Autor Denunciar Share Postado Novembro 21, 2006 O SO utilizado é o Linux.Os parametros do ping: "-que" "-c2" "-w3" "self.ip"onde "-que" : formatacao; -c2: dois pacotes; -w3: timeout 3 segundos; self.ip: ip da maquina a pingarPS: "-que" corresponde a -quê (bug deste editor!!!!)Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Novembro 23, 2006 Denunciar Share Postado Novembro 23, 2006 Se você fizer o teste manualmente, o ping retorna o desejado? (Quando a máquina está off, é claro).Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Novembro 24, 2006 Denunciar Share Postado Novembro 24, 2006 sim claro.E o mais estranho é que se colocar o codigo no corpo principal do script funciona!!!Se colocar este mesmo codigo no metodo RUN da thread .. esta bloqueia :( Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
lmsf
Olá pessoal.
Hoje trago à discussao um problema que tenho sobre o seginte:
Imaginem uma thread que executa o comando PING de 2 em 2 segundos.
Agora imaginem que a maquina à qual desejo fazer o ping esta acessivel. Tudo bem até aqui.
Coloco o script a correr e de sguida posso verificar que a thread envia: 2 pacotes enviados, 2 pacotes
recebidos
De seguida faco um reset à maquina. Aqui comecam os problemas!!!
Quando a maquina fica incessivel, a thread bloqueia e so torna a responder quando a maquina fica acessivel.
Ora, pelo que percebi, o comando PING deveria exibir: 2 pacotes enviados, 0 pacotes recebidos.
Será que alguém me poderia ajudar?
Obrigado.
Codigo:
import os
import re
import time
import datetime
import sys
from threading import Thread
class CheckPingBladeStatus(Thread):
"Threading example"
def __init__ (self, ip):
Thread.__init__(self)
self.keepGoing = True
self.transmitted = 0
self.received = 0
self.ip = ip
self.status = 0
self.downTime = None
def run(self):
while 1:
result = os.popen("ping -que -c2 -w3 " + self.ip)
cmd = result.readlines()
print cmd
def stop(self):
self.keepGoing = False
def getLastBytesTransmitted(self):
return self.transmitted
def getLastBytesReceived(self):
return self.received
def printStatus(self):
print datetime.datetime.now()," => Transmitted: ",current.getLastBytesTransmitted()," Received: ",current.getLastBytesReceived()
def clearValues(self):
self.status = -1
self.downTime = 0
CheckPingBladeStatus.lifeline = re.compile("(\d+) packets transmitted, (\d+) received, (\d+)%")
#start a new thread
current = CheckPingBladeStatus("10.50.38.161") # TA16
current.start()
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.