Como posso acionar algo quando me conecto à internet?

4

Gostaria de saber como posso fazer a máquina fazer alguma coisa toda vez que ela se conecta à internet?

como verificar atualizações quando eu estiver conectado à internet?

Obrigado

    
por DeaDSouL 20.06.2011 / 15:14

4 respostas

2

Não há absolutamente nenhum indicador que mostra se você tem uma conexão com a Internet ou não. Isso porque você sempre se conecta a algum tipo de gateway (roteador, modem, ...) que configura a conexão com o seu ISP. Portanto, para ter certeza se você está online ou não, você deve verificar a conexão fazendo o ping ou construindo uma conexão HTTP (usando curl , por exemplo) e verificando o resultado. Mas esteja avisado: uma resposta de ping não significa que você pode ter uma conexão HTTP. E receber uma resposta HTTP não significa que você pode navegar na web. Você sempre tem que verificar a resposta.

Você pode ter certeza de ter uma conexão com a Internet se souber a resposta esperada. Por exemplo, você pode analisar sites como link para um endereço IP usando expressões regulares. Se sua expressão regular estiver correta e não encontrar um endereço IP, você não terá conexão com a Internet.

Resposta curta: Escreva um script no qual você verifica a conexão com a internet (como descrito acima). No sucesso você executa os comandos que você quer e define um sinalizador para o qual você está pronto hoje (apenas crie um arquivo e verifique a existência), na falha você não faz nada. Faça desse script um cronjob.

    
por dAnjou 20.06.2011 / 15:46
1

O script que você está procurando se parece com isso

[ -n "$(curl -s icanhazip.com | grep ^[0-9])" ] && firefox
  • "curl icanhazip.com" retorna um endereço IP se você estiver online
  • "grep ^ [0-9]" verifica se o primeiro caractere é um dígito
  • "[-n" ... "] & amp; & amp;" significa "se isso for verdade, prossiga para o próximo comando (que no meu exemplo é" firefox ")"
  • Este é um truque rápido e este script não funcionará se o icanhazip.com estiver inativo ou se você tiver um endereço IPv6.

Para configurar facilmente um cronjob para executá-lo a cada x minutos, você pode instalar o "gnome-schedule".

    
por davidc3 22.06.2011 / 10:25
1

O Network-manager expõe uma interface DBus que você pode usar para ser notificado quando você se conecta a uma rede. Isso normalmente significa que você também está conectado à internet, mas não sei se o Network-Manager possui algum método para confirmar isso. Você pode querer usar o Network-Manager para ser notificado quando você se conectar a uma rede e, em seguida, confirmar que você tem acesso à Internet e, em caso afirmativo, faça o que quiser.

    
por Jo-Erlend Schinstad 22.06.2011 / 16:38
0

Como dAnjou disse, eu não acredito que haja um gatilho que você possa usar.

No entanto, para verificar se há uma conexão com a Internet, há uma maneira mais fácil do que usar o curl. Use fping como segue, que retorna 0 se conectado e 2 se não. Veja o manual do fps para mais informações.

fping -q example.com

(O uso de example.com é válido, porque o nome de domínio existe mesmo que esteja reservado para testes.)

Simplificando o exemplo de Davidc se torna:

fping -q example.com && firefox
    
por Paddy Landau 22.06.2011 / 13:50