Como executo um script depois que o DHCP atribui um endereço IP na inicialização?

1

Eu escrevi um script de shell que envia o meu IP atual para uma pasta do Google Drive para ajudar a automatizar o login em um PI de framboesa. Outro script no meu laptop recupera o IP e faz o login. O script funciona bem quando eu o executo a partir da linha de comando, mas estou tendo problemas para executá-lo na inicialização depois que o IP é atribuído.

Eu tentei o crontab, mas o script é executado antes do IP ser designado. Eu não desejo definir um temporizador ou usar um loop while para esperar por um IP, que não parece muito eficiente. Eu estou tentando executar meu script durante o processo de inicialização, mas depois que o DHCP é executado. Eu tentei adicionar o caminho para upstart na função allinterfaceup (), mas isso não funcionou. Qualquer ajuda seria apreciada.

Framboesa PI 3, Ubuntu Mate 16.04 LTS

script:

#!/bin/sh

#if ([ $reason = "BOUND" ] || [ $reason = "RENEW" ] )
#then

        echo 'hostname -I | cut -d' ' -f1 ' > ~/ipAddr/ip.txt

        rclone copy ~/ipAddr/ip.txt remote:pi 
#fi
    
por dpoiesz 13.02.2018 / 03:24

1 resposta

2

Ganchos

Existe uma variedade de possibilidades de como fazer isso.

Se você quiser executar o seu script " depois que o DHCP for executado ", os ganchos serão a coisa certa para você!

dhclient executará tudo no diretório /etc/dhcp/dhclient-exit-hooks.d/ depois que ele sair. *

É uma boa prática vincular seu script ao diretório, em vez de colocá-lo lá - mas ambos funcionam.

ln -s /path/to/your/script  /etc/dhcp/dhclient-exit-hooks.d/name_of_your_script

(*) No entanto, dhclient não "sai" por si só, mas continua a executar e executa ("fontes") este diretório toda vez que ele faz algo por um motivo .

Portanto, para proibir que seu script seja executado várias vezes, sugiro que você o envolva com uma "declaração if" para executá-lo somente se o endereço IP for vinculado ou renovado assim:

if ([ $reason = "BOUND" ] || [ $reason = "RENEW" ])
then

# your script commands here

fi
    
por Robert Riedl 13.02.2018 / 10:09