Detectar quando o dispositivo entra na rede sem fio (roteador do aeroporto)

0

Eu sou repostando essa pergunta com mais descrição clara como o outro foi fechado. Não tenho certeza se há uma maneira diferente de fazer isso ou não.

Existe alguma maneira de detectar quando um dispositivo ingressa na minha rede através do terminal (mac). Quero acionar determinadas ações quando chegar em casa e estiver esperando usá-lo quando meu telefone se conectar a um Wi-Fi como acionador.

Eu sei que ele conectará / desconectará enquanto estiver em casa, então eu iria brincar com os filtros no software, mas por enquanto há alguma maneira de detectar quais dispositivos estão ligados.

Não me importo de procurar endereços MAC. Preferiria não ter que desbloquear o telefone para a solução.

Eu tenho uma cápsula do tempo (essencialmente um aeroporto extremo) como meu roteador.

    
por Tal 05.03.2013 / 22:53

4 respostas

0

Fazer isso provavelmente será extremamente difícil, se possível. Pode fazer mais sentido olhar para algum tipo de "trabalho", dependendo do seu hardware, requisitos e conjunto de habilidades.

Um pensamento seria garantir que a conexão WIFI de seus telefones sempre recebe um endereço IP específico (endereçamento estático ou o roteador Wifi para atribuir dinamicamente um IP estático) e, em seguida, executar um script periódico (Cronjob no seu MAC?) que pinga seu celular e procura uma resposta [ou a adição de seu endereço MAC ao seu cache de arp se ele não responder]. Esta é provavelmente a solução mais fácil.

Especulando [Eu não possuo produtos da Apple e nunca joguei com a Autenticação Radius para dispositivos WIFI], uma alternativa pode ser atualizar / reconfigurar seu roteador para fazer autenticação Radius para sua conexão WIFI, executar o servidor Radius no seu Mac e faça com que acione o script que você deseja executar quando se conectar.

    
por 06.03.2013 / 00:03
0

A única opção que posso pensar seria um aplicativo no iPhone que sabia quando estava em casa. iOS 4 adicionou plano de fundo serviços de localização com regiões baseadas em formas (às vezes também chamadas de delimitações geográficas. O aplicativo pode ser configurado para chamar seu servidor para acionar o comportamento desejado.

É claro que esse aplicativo teria que ser escrito e depois aprovado pela Apple ou executado no modo de teste no seu telefone.

    
por 06.03.2013 / 02:53
0

Usando a versão do Windows do Airport Utility, você pode ativar os registros do sistema. Tenho certeza de que existe um utilitário de registro do sistema que cria ações quando determinados logs são transmitidos. Quando o computador efetuar login, defina uma ação correspondente a esse log do sistema.

    
por 12.10.2014 / 23:04
0

Eu uso um script PHP "shell" semelhante a este, lançado do terminal para testar se um ou mais dispositivos estão inativos / desconectados. Eu uso ele para monitorar se uma ponte Wifi foi desativada (se ela não puder ver o endereço MAC dos dispositivos no outro lado da ponte, então presuma que ela esteja inativa):

#!/usr/bin/php
<?php
    $MULTICAST_ADDR='192.168.99.255';
    $DEVICES_TO_TEST_FOR_BRIDGE=array( // list of MACs
        'XX:XX:63:f2:XX:XX',
        'XX:XX:d0:ad:XX:XX',
        'XX:XX:b9:eb:XX:XX'
    );
    $SLEEP=10000000; // one sec = 1000000, sleep before reconnect


    while(TRUE) {
        usleep($SLEEP);

        flush();

        'ping -b -c 3 -t 3 $MULTICAST_ADDR 2> /dev/null';

        flush();

        $res='arp -an';

        $bridgeIsOn=FALSE;
        echo("DEVICES:\n");
        echo($res);
        echo("\n");

        foreach($DEVICES_TO_TEST_FOR_BRIDGE as $deviceToTestForBridge) {
            if (strpos($res, $deviceToTestForBridge) !== false) {
                $bridgeIsOn=TRUE;
                $lastBridgeOn=time();
            }
        }

    if(!$bridgeIsOn && (time()-$lastBridgeOn>5*60) ) { // If bridge is down for 5 minutes
        echo("    BRIDGE HAS BEEN OFF FOR LONG (".(time()-$lastBridgeOn)."s) - REQUESTING A RESTART\n");

        // Do something here
    }
}

O que faz é como, em um terminal, digitar

    ping -b -c 3 -t 3 192.168.99.255 2> /dev/null

Meus dispositivos estão no intervalo 192.168.99.xxx, .255 significa "todos eles". Então pingar todos eles e ignorar as respostas.

E então lendo as tabelas arp com o comando

    arp -an

O resto do código é comparar a lista com os dispositivos que eu quero. No final do loop, $ bridgeIsOn é TRUE ou FALSE, e $ lastBridgeOn tem a última vez que foi visto, para que eu possa fazer escolhas e executar coisas. No seu caso, você deve reverter a lógica, $ bridgeIsOn significa que seu telefone está na rede: if($bridgeIsOn) { /* do something */}

Salvei o script como "monitorbridge", torne-o executável e inicie-o em um terminal

    ./monitorbridge

O script permanece ligado até eu fechar o terminal ou digitar ^ C. É claro que você pode começar no login ou na inicialização.

    
por 06.12.2017 / 12:33