Coloque o script de shell em um argumento up
para a sub-rotina de configuração eth1
em /etc/network/interfaces
.
Estou executando um servidor Debian Lenny com duas interfaces de rede. A primeira interface eth0 é conectada à LAN e recebe um endereço IP do servidor DHCP nesta LAN. A segunda interface eth1 é conectada diretamente a um NAS, neste NAS, um servidor DHCP é instalado, assim, quando o NAS é ligado, o eth1 recebe um endereço IP deste.
Eu quero executar um script de shell automaticamente quando o eth1 receber um endereço de IP. Como isso pode ser feito?
Seu sistema já está executando um script quando recebe um endereço IP via DHCP. É exatamente assim que as informações fornecidas pelo servidor DHCP são usadas para configurar coisas como seu endereço IP, configuração de resolução, roteamento e assim por diante.
Se você estiver usando o cliente ISC dhcp (chamado "dhclient"), então o script é tipicamente algo como / etc / dhclient-script. Se você estiver usando outro cliente DHCP (bomba, etc), provavelmente terá uma funcionalidade semelhante.
você também pode executar um cronjob para verificar seu ipadress com freqüência.
você pode usar um script com o seguinte conteúdo:
if [ $(ifconfig eth1 |grep "inet a"| cut -f 2 -d ":" | cut -f 1 -d " ") = "youripadress" ];
then
echo "oh, i got an ip";
#do some nasty stuff here!
fi
mas você tem que construir algo de alguma forma, o script é executado apenas 1 vez. por exemplo. salve ip em um arquivo e verifique se o ip mudou ou algo assim. A resposta do womble seria a melhor solução se você quiser apenas verificar se a interface é exibida exatamente uma vez.
Tags networking debian linux