Qual é a melhor maneira de acionar scripts ou ações quando o computador é desconectado da rede?

3

Estou executando o 12.04 LTS. Há vários recursos compartilhados que eu uso que são armazenados remotamente em um servidor local. Quando desconectado da rede (por exemplo, em uma rede ou falha no roteador), gostaria de arquivar, renomear e desarquivar backups de diretório dinamicamente para continuar o uso dessas avaliações compartilhadas até que a rede seja restaurada.

Existe um método preferido de obter esses dados e acionar scripts ou outras ações do sistema quando o estado conectado é alterado?

EDIT: Após algumas pesquisas adicionais, vejo que existe a possibilidade de fazer isso com udev de Acionando uma ação quando um volume específico é conectado . No entanto, esta é a melhor maneira? Também existe uma ferramenta alternativa para o udevinfo? Não parece ser parte do pacote.

    
por Simianspaceman 19.03.2013 / 21:52

1 resposta

3

Quando uma interface de rede é ativada ou desativada, os scripts sob /etc/network são executados. Você pode colocar seu script em /etc/networking/if-down.d ou em /etc/networking/if-post-down.d . O primeiro é executado com a interface ainda disponível enquanto o segundo é executado com a interface já desconectada; é claro, a interface pode ter sido desativada automaticamente porque a rede local falhou e, nesse caso, você não conseguirá usar a rede mesmo a partir de if-down . O script obtém informações sobre a interface de rede por meio de variáveis de ambiente, conforme documentado no interfaces(5)

Se a conexão de rede cair devido a uma falha em algum lugar fora do link local ou até mesmo porque o primeiro roteador para de funcionar corretamente, sua máquina não será notificada. Para detectar essa perda de serviço, você precisa executar algum tipo de serviço de heartbeat que verifique periodicamente se o servidor remoto ainda está ativo e respondendo. Não há uma solução única para todos os casos aqui, porque diferentes casos de uso exigem diferentes limites entre "a rede / servidor está lenta" e "a rede / servidor está inativa". Além disso, determinar se o servidor está ativo é específico do aplicativo; pode ser um ping ou uma solicitação HTTP ou um pacote keepalive em uma conexão TCP, etc.

    
por Gilles 19.03.2013 / 22:18