Os arquivos em /etc/network/if-up.d já são executados automaticamente sempre que uma interface (qualquer interface) é exibida. Quando você especifica o mesmo script para ser executado novamente em um comando explícito post-up , você só faz com que o script seja executado novamente. Então, meu palpite é que isso deve acontecer:
- Ele é executado uma vez quando
loaparece (com a variável de ambienteIFACE=lo) devido a estar localizado em/etc/network/if-up.d. - Ele é executado uma vez quando
eth0aparece (com a variável de ambienteIFACE=eth0) pelo mesmo motivo. - Ele é executado novamente quando
eth0aparece (com a variável de ambienteIFACEunset) porque você solicitou isso em uma diretivapost-up.
Não sei de onde vem a quarta vez, mas de qualquer forma já são três.
Você precisa localizar o script em outro lugar e executá-lo uma vez usando uma diretiva post-up ou deixá-lo onde estiver, mas não mencioná-lo em uma diretiva post-up e verifique o valor de $IFACE . que não faz nada a menos que a interface desejada ( eth0 ) tenha surgido.