Não há uma maneira boa ou confiável de um host informar se outra máquina já está usando seu endereço IP ou se o IP está na sub-rede errada para sua rede local.
Você pode usar tcpdump
ou arpwatch
ou similar para ouvir a interface de rede para tentar descobrir se algum outro endereço MAC está usando seu IP (mas mesmo isso não é confiável porque o outro host pode estar desativado ou não tem nenhum motivo para enviar pacotes na rede no momento.Também é provável que seu host esteja em um switch - dificilmente alguém usa hubs atualmente - então só poderá ver os pacotes de broadcast do outro host e não, por exemplo , comunicação entre o outro host e um servidor).
Mesmo tentando detectar pacotes de sub-redes diferentes é problemático - é bastante normal e legítimo que o mesmo segmento de ethernet físico tenha múltiplas sub-redes transportadas nele. Você pode ver pacotes da sub-rede alternativa, mas nenhum da sua própria sub-rede e assumir que sua sub-rede está errada, quando tudo o que realmente aconteceu é que não houve tráfego de outros hosts em sua sub-rede no tempo que você estava escutando. p>
Por quanto tempo você deseja ouvir a interface de rede? Por quanto tempo você considera razoável adiar a inicialização e iniciar serviços dependentes da rede enquanto ouve? 5 segundos? não o suficiente. 5 minutos? provavelmente é tempo suficiente para uma amostra decente da rede (não há garantias, porém), mas é muito longo para esperar que o seu rpi inicialize.
Faz mais sentido tentar um IP DHCP e, em seguida, recorrer a um endereço estático, se não houver um servidor DHCP (mas se você souber a que endereço IP estático está, seria mais simples usá-lo) que).
Conclusão:
Mantenha o uso do DHCP ou de um endereço estático.
Se você for o administrador da rede, verifique se há um servidor DHCP em funcionamento na rede. Opcionalmente, configure-o para fornecer endereços IP fixos aos endereços MAC do seu rpi.