Como executar um script após alteração de IP

Como executar um script após alteração de IP

Minha máquina Debian atualmente faz parte da minha LAN doméstica, atrás da caixa do ISP que lida com todas as atividades relacionadas à rede (DHCP, firewall, telefonia, IPTV, ...). Um caso clássico de rede doméstica residencial.

Pretendo em breve mover o servidor para um switch entre o conversor de fibra (entrada de fibra, saída RJ45) e a caixa do ISP - e configurá-lo para receber meu endereço IP público da Internet via DHCP do ISP.

Infelizmente, meu ISP força uma mudança desse endereço de tempos em tempos (para fornecer um "serviço profissional" de um IP fixo mediante o pagamento de uma taxa). Eu escrevi um script que verifica meu endereço IP visto na Internet e modifica a entrada DNS do meu nome externo em caso de incompatibilidade.

Posso executar esse script periodicamente, cronmas seria mais interessante acioná-lo quando o eth0IP mudar (o que acontecerá quando o ISP enviar um novo endereço "para sua caixa", que agora é meu servidor).

Existe tal mecanismo disponível (ações a serem executadas após uma alteração do endereço IP)?

Responder1

Você pode usar um script de despachante do Network Manager para executar um script quando a interface for ativada ou desativada, o que ocorrerá quando o ISP alterar seu endereço IP (ele interromperá sua conexão e a ativará novamente com uma nova).

Dê uma olhada nos arquivos em /etc/NetworkManager/dispatcher.d/. No meu há um script simples 20-chronyque é um bom modelo:

#!/bin/sh
# This is a NetworkManager dispatcher script for chronyd to set its NTP sources
# online/offline when a default route is configured/removed on the system.

export LC_ALL=C

if [ "$2" = "up" ]; then
        /sbin/ip route list dev "$1" | grep -q '^default' &&
                /usr/bin/chronyc -a online > /dev/null 2>&1
fi

if [ "$2" = "down" ]; then
        /sbin/ip route list | grep -q '^default' ||
                /usr/bin/chronyc -a offline > /dev/null 2>&1
fi

exit 0

Você pode adaptar as duas ifinstruções para funcionarem com seus scripts ou, se seus scripts só precisarem ser executados quando a interface for ativada, basta modificar a primeira ife remover a segunda.

Responder2

Se você estiver em um sistema com a ferramenta dbus-monitor(1), você pode iniciar este programa como um daemon para que ele possa monitorar alterações de endereço de interface. Não tenho certeza de qual mensagem é, mas algo como:

dbus-monitor 'some-filtering-expression' |
while read -r line; do
    xargs /path/to/your/script "${line"}
done

Você também pode deixar o dbus-monitor rodar livremente (sem filtros) para observar o que acontece quando sua conexão de rede é ativada.

informação relacionada