Como executar um script, dependendo da conexão com a internet

Como executar um script, dependendo da conexão com a internet

Costumo montar uma unidade remota usando sshfs. Eu adoraria ter essa montagem automaticamente. No entanto, se eu montá-lo em meus scripts .bashrc ou de inicialização, a montagem geralmente falha porque minha conexão sem fio com a Internet ainda não foi estabelecida.

Alguém conhece uma maneira fácil de executar um script bash toda vez que a conexão é feita ou de montar automaticamente uma unidade sshfs?

Responder1

Adicione seu script ao /etc/network/if-up.d/. Nomeie seu script sem a extensão '.sh'.

Além disso, depois de adicionar o script, execute chmod +x /etc/network/if-up.d/yourscriptnamepara dar a permissão necessária.

Certifique-se de que a interface de rede (por exemplo, wlan0 ou eth0) que deve acionar seu script quando ativada seja mencionada no arquivo /etc/network/interfaces.

Responder2

Nota do editor: O Cuttlefish não é atualizado desde 2012 e não está em nenhum repositório atual do Ubuntu

Ubuntu 12.04

  • InstalarChoco: Uma ferramenta simples, que realiza reflexos no seu computador executando ações quando eventos específicos são acionados.
  • Abra o Choco e clique em New.

    Passo 1

    • Dê um nome e mudeAtivado por estímuloopção para LIGADO.
    • Clique emEstímulo, selecione a categoriaRedee digiteConecte-se à WLAN. Clique OK.

    Passo 2

    • Você também pode selecionar o SSID da rede sem fio e tem a opção de verificar ou não isso na inicialização.

    etapa 3

    • Agora você terá que especificar uma reação. Vá paraReaçãoguia e clique em adicionar. SelecioneFormuláriosda categoria eIniciar aplicativo (em modo avançado)do tipo.

    Passo 4

    • Agora especifique o script que deseja executar na opção executável. Você pode até passar parâmetros para o script.

    Etapa 5

    • E é isso! Certifique-se também de adicionar Cuttlefish nos aplicativos de inicialização. Vá paraEditar > Preferênciase ative a opção de inicialização automática.

    Etapa 6

Responder3

Responderei esta parte da pergunta do OP: "Eu adoraria ter essa montagem automaticamente"

Minha ferramenta favorita para montagem automática de compartilhamentos de rede é o autofs: https://help.ubuntu.com/community/Autofs

AutoFS é minha ferramenta preferida para montar meu NAS - para todos os meus laptops e estações de trabalho.

"autofs é um programa para montar diretórios automaticamente conforme necessário. As montagens automáticas são montadas somente à medida que são acessadas e desmontadas após um período de inatividade. Por causa disso, a montagem automática de compartilhamentos NFS/Samba conserva a largura de banda e oferece melhor desempenho geral em comparação com montagens estáticas via fstab."

Responder4

systemdparece ter assumido o controle das redes hoje em dia.

$ networkctl
WARNING: systemd-networkd is not running, output will be incomplete.

IDX LINK             TYPE               OPERATIONAL SETUP
  1 lo               loopback           n/a         unmanaged
  2 enp0s25          ether              n/a         unmanaged
  3 wlo1             wlan               n/a         unmanaged

3 links listed.

Também possui unidades correspondentes às interfaces

$ systemctl list-units |grep wlo1
sys-devices-pci0000:00-0000:00:1c.3-0000:24:00.0-net-wlo1.device                                                        loaded active plugged   Centrino Ultimate-N 6300 (3x3 AGN)
sys-subsystem-net-devices-wlo1.device                                                                                   loaded active plugged   Centrino Ultimate-N 6300 (3x3 AGN)

Aparentemente você pode usá-los em arquivos de unidades de serviço. Então basta criar uma unidade de serviço para executar seu script e usar algo assim dentro para fazê-lo rodar condicionalmente na rede:

BindsTo=sys-subsystem-net-devices-wlo1.device
After=sys-subsystem-net-devices-wlo1.device

Boa sorte! Eu não testei isso, então "sua milhagem pode variar".

Fontes:

informação relacionada