Você ainda pode monitorar o pppd de outras várias formas:
1. (popen) "cat /var/log/messages"
2. pelo pid do pppd
3. "ps -ex | grep pppd | wc -l" (deve retornar maior q 0)
4. "ifconfig | grep ppp0 | wc -l" (deve retornar maior q 0)
-Gustavo
Adriano Côrtes Vieira wrote:
>Boa tarde a todos,
>
>
>Gostaria de saber se existe alguma forma de utilizando o python eu
>descobrir se minha conexão com a internet ainda esta ativa ou
>desconectou. Isto por que estou utilizando o PPP on demand, mas quando
>cai a conexao (desconectado pelo provedor ) e tento abrir meu socket
>novamente da erro porque o pppd segura os pacotes tcp/ip, nao retornando
>o erro, isto porque ele esta tentando reconectar, mas o socket nao
>consegue atingir o destino e fica travando minha aplicação.
>
>
>Grato,
>
>
>
>
>
===============================================================
Antes de enviar sua mensagem dê uma lida em:
http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar
===============================================================
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html
Connection terminated.
Connect time 47.6 minutes.
Sent 751735 bytes, received 13509887 bytes.
Você pode monitorar o arquivo /var/log/messages com o popen ou com o
próprio open, fazendo readline (não sei se funciona em python, em perl
funciona bem, já usei isso). Então se vc detectar a substring
"Connection terminated." dentro do readline, é pq a linha foi-se...
ficaria (em pseudocodigo) com open:
abre o /var/log/messages
vai atá o fim do arquivo
while 1:
readline nele
se achou a substring "terminated":
faça algo de útil
senao
aguarde 2 segundos para o proximo loop
com popen:
abre o 'tail -f /var/log/messages'
vai atá o fim do arquivo
while 1:
readline nele
se achou a substring "terminated":
faça algo de útil
senao
aguarde 2 segundos para o proximo loop
- Gustavo
Adriano Côrtes Vieira wrote:
>Ok Gustavo, vou dar uma olhada nestas formas, mas só mais um detalhe,
>usanso o "PPP on demand", mesmo que a conexao tenha caido e o pppd esta
>esparando para reconectar, estes testes vao ter o resultado conforme vc
>indicou?
>
>
> Gustavo Henrique Cervi escreveu:
>
>
>>Tem vários jeitos de saber.
>>O mais comum é pingando o gateway de sua conexao (o gateway da conexão).
>>
>>Você ainda pode monitorar o pppd de outras várias formas:
>>
>>1. (popen) "cat /var/log/messages"
>>2. pelo pid do pppd
>>3. "ps -ex | grep pppd | wc -l" (deve retornar maior q 0)
>>4. "ifconfig | grep ppp0 | wc -l" (deve retornar maior q 0)
>>
>>-Gustavo
>>
>>
>>
>>
>
>
> Adriano Côrtes Vieira
> Deltaway - Sis. de Trânsito e Tecno. Ltda.
> Engenheiro de Computação
> (62) 3548-1003
Mais uma forma que pode ser adaptada para o seu caso(testada no Linux e
Windows e funcionou até em VPN) :
import socket
from copy import *
def check_host(host='10.xxx.xxx.xxx'):
a=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
a.settimeout(.5)
b=a.connect_ex((host, 80))
retorno=copy(b)
return b
aí é só perguntar if check_host()
temos usado esta função com sucesso com o seguinte objetivo quando o
funcionário conecta seu 'notebook' na rede, informações são passadas
automaticamente para uma base central. foi testado e serve para
verificar se o serviço e porta estão ativos, mas indiretamente funciona
até quando retiramos o cabo da rede.
no começo pensamos em usar o ping mas percebemos que perderíamos a
portabilidade, pois percebemos que existem pings e pings - a resposta e
a passagem de parâmetros se mostravam diferentes no Linux e no windows
abraços a todos
Campos
Em Sex, 2005-08-26 às 14:09 -0300, Adriano Côrtes Vieira escreveu:
> Boa tarde a todos,
>
>
> Gostaria de saber se existe alguma forma de utilizando o python eu
> descobrir se minha conexão com a internet ainda esta ativa ou
> desconectou. Isto por que estou utilizando o PPP on demand, mas quando
> cai a conexao (desconectado pelo provedor ) e tento abrir meu socket
> novamente da erro porque o pppd segura os pacotes tcp/ip, nao retornando
> o erro, isto porque ele esta tentando reconectar, mas o socket nao
> consegue atingir o destino e fica travando minha aplicação.
>
>
> Grato,
>
>
>
--
Mensagem enviada de uma máquina rodando GNU/Linux
LinuxCounter #173502
Eu programo em PYTHON
Eu uso Mozilla
8>( Saia da sua pseudo 'zona-de-conforto' :>)
Mas esse host='10.xxx....' funciona ou tem que ser um host real? Pelo
que entendi, você tenta conectar a um servidor web, daí pergunto: e se
o servidor web estiver off? Vai parecer que você não está conectado,
mesmo estando, certo?
Bom, assumindo essa abordagem de conectar a um servidor web, eu
sugeriria fazer uma lista com sites "confiáveis" e tentar conectar a,
pelo menos, 2 ou 3 deles, se conseguir conectar a pelo menos 1, então
a net tá ativa.
Adaptando teu código, ficaria algo como:
import socket
confiaveis = ['www.google.com', 'www.yahoo.com', 'www.bb.com.br']
def check_host():
global confiaveis
for host in confiaveis:
a=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
a.settimeout(.5)
try:
b=a.connect_ex((host, 80))
if b==0: #ok, conectado
return True
except:
pass
a.close()
return False
print check_host()
--
JP