From d2d28580a251e0ef9145299d25be5116ec509b8f Mon Sep 17 00:00:00 2001 From: "tiago.aica" Date: Sun, 15 Feb 2026 16:25:42 +0000 Subject: [PATCH] =?UTF-8?q?for=C3=A7a=20ip=20renewal=20on=20eth0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debian/set_mac_wifi.sh | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/debian/set_mac_wifi.sh b/debian/set_mac_wifi.sh index b64b513..f88d635 100644 --- a/debian/set_mac_wifi.sh +++ b/debian/set_mac_wifi.sh @@ -194,6 +194,25 @@ disable_wifi() { fi } +# Função para forçar renovação de IP +force_ip_renewal() { + local iface="$1" + + if systemctl is-active --quiet systemd-networkd; then + log "A forçar renovação de IP em $iface (reiniciando systemd-networkd)..." + if systemctl restart systemd-networkd; then + log "Serviço systemd-networkd reiniciado com sucesso. IP deve ser atribuído em breve." + return 0 + else + log "Erro: Falha ao reiniciar systemd-networkd." + return 1 + fi + else + log "Aviso: systemd-networkd não está ativo. Tentando alternativa..." + return 1 + fi +} + # Tarefa em Background para monitorizar rede monitor_network_task() { log "Monitor: A iniciar monitorização contínua da rede..." @@ -228,19 +247,18 @@ monitor_network_task() { log "Monitor: Wi-Fi ($WLAN_IFACE) já está desativado ou não encontrado." fi else - log "Monitor: Interface $IFACE ativa mas sem IP. Wi-Fi permanece ativo ou inicia ativação." - if ip link show "$WLAN_IFACE" &> /dev/null; then - if ip link show "$WLAN_IFACE" | grep -q "DOWN"; then + log "Monitor: Interface $IFACE ativa mas sem IP. Tentando forçar renovação de IP..." + if force_ip_renewal "$IFACE"; then + log "Monitor: Renovação de IP bem-sucedida. Wi-Fi permanece ativo até confirmação." + else + log "Monitor: Falha ao renovar IP. Ativando Wi-Fi como fallback..." + if ip link show "$WLAN_IFACE" &> /dev/null && ip link show "$WLAN_IFACE" | grep -q "DOWN"; then if ip link set "$WLAN_IFACE" up; then - log "Monitor: Wi-Fi ($WLAN_IFACE) ativado com sucesso." + log "Monitor: Wi-Fi ($WLAN_IFACE) ativado como fallback." else log "Monitor: Falha ao ativar Wi-Fi ($WLAN_IFACE)." fi - else - log "Monitor: Wi-Fi ($WLAN_IFACE) já está ativo." fi - else - log "Monitor: Interface $WLAN_IFACE não encontrada." fi fi fi