..
This commit is contained in:
Vendored
+140
-117
@@ -1,40 +1,29 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Script Dinâmico de Configuração de Rede para Raspberry Pi
|
# Script Dinâmico de Configuração de Rede para Raspberry Pi
|
||||||
# Localização: /usr/local/bin/configure_network.sh
|
# Localização: /usr/local/bin/configure_network.sh
|
||||||
|
# Descrição: Configura MAC address persistente para interface eth0 e monitoriza estado da rede
|
||||||
|
|
||||||
# --- Configurações ---
|
# --- Configurações ---
|
||||||
LOG_FILE="/var/log/network_config.log"
|
LOG_FILE="/var/log/network_config.log"
|
||||||
UDEV_RULES_FILE="/etc/udev/rules.d/81-mac-spoof.rules"
|
UDEV_RULES_FILE="/etc/udev/rules.d/81-mac-spoof.rules"
|
||||||
|
IFACE="eth0"
|
||||||
|
WLAN_IFACE="wlan0"
|
||||||
|
|
||||||
# --- Funções Auxiliares ---
|
# --- Funções Auxiliares ---
|
||||||
|
|
||||||
# Função de Log
|
# Função de Log
|
||||||
log() {
|
log() {
|
||||||
echo "$(date '+%Y-%m-%d %H:%M:%S'): $1" | tee -a "$LOG_FILE"
|
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
||||||
|
echo "$timestamp: $1" | tee -a "$LOG_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to disable Wi-Fi
|
# Função para verificar se a interface tem IP
|
||||||
disable_wifi() {
|
has_ip_address() {
|
||||||
# Create log directory if it doesn't exist
|
local iface="$1"
|
||||||
mkdir -p /var/log
|
if ip addr show "$iface" | grep -q "inet "; then
|
||||||
|
return 0
|
||||||
# Wait for 1 minute (60 seconds) before disabling Wi-Fi
|
|
||||||
echo "$(date): Waiting 60 seconds before checking eth0 IP and disabling Wi-Fi..." | tee -a /var/log/set_mac.log
|
|
||||||
sleep 60
|
|
||||||
|
|
||||||
# Check if eth0 has an IP address before disabling Wi-Fi
|
|
||||||
if has_ip_address "eth0"; then
|
|
||||||
if ip link show "wlan0" &> /dev/null; then
|
|
||||||
if ip link set "wlan0" down; then
|
|
||||||
echo "$(date): Wi-Fi (wlan0) disabled successfully (eth0 has IP)" | tee -a /var/log/set_mac.log
|
|
||||||
else
|
else
|
||||||
echo "$(date): Failed to disable Wi-Fi (wlan0)" | tee -a /var/log/set_mac.log
|
return 1
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "$(date): wlan0 interface not found (Wi-Fi already disabled?)" | tee -a /var/log/set_mac.log
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "$(date): eth0 does not have an IP address. Wi-Fi remains active." | tee -a /var/log/set_mac.log
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,19 +31,16 @@ disable_wifi() {
|
|||||||
ask_confirmation() {
|
ask_confirmation() {
|
||||||
local message="$1"
|
local message="$1"
|
||||||
local default="$2" # "y" or "n"
|
local default="$2" # "y" or "n"
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
if [ "$default" = "y" ]; then
|
if [ "$default" = "y" ]; then
|
||||||
read -p "$message [Y/n]: " choice < /dev/tty
|
read -p "$message [Y/n]: " choice < /dev/tty
|
||||||
else
|
else
|
||||||
read -p "$message [y/N]: " choice < /dev/tty
|
read -p "$message [y/N]: " choice < /dev/tty
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Default choice if user just presses Enter
|
# Default choice if user just presses Enter
|
||||||
if [ -z "$choice" ]; then
|
if [ -z "$choice" ]; then
|
||||||
choice="$default"
|
choice="$default"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$choice" in
|
case "$choice" in
|
||||||
y|Y|yes|Yes|YES)
|
y|Y|yes|Yes|YES)
|
||||||
return 0
|
return 0
|
||||||
@@ -75,7 +61,13 @@ generate_unique_mac() {
|
|||||||
serial=$(awk '/Serial/ {print $3}' /proc/cpuinfo | tr -d ' ')
|
serial=$(awk '/Serial/ {print $3}' /proc/cpuinfo | tr -d ' ')
|
||||||
|
|
||||||
if [ -z "$serial" ]; then
|
if [ -z "$serial" ]; then
|
||||||
printf '%02X:%02X:%02X:%02X:%02X:%02X' $((0x02 | (RANDOM % 256) & 0xFE)) $((RANDOM % 256)) $((RANDOM % 256)) $((RANDOM % 256)) $((RANDOM % 256)) $((RANDOM % 256))
|
# Fallback: generate random MAC if serial not available
|
||||||
|
printf '%02X:%02X:%02X:%02X:%02X:%02X' $((0x02 | (RANDOM % 256) & 0xFE)) \
|
||||||
|
$((RANDOM % 256)) \
|
||||||
|
$((RANDOM % 256)) \
|
||||||
|
$((RANDOM % 256)) \
|
||||||
|
$((RANDOM % 256)) \
|
||||||
|
$((RANDOM % 256))
|
||||||
else
|
else
|
||||||
local hash
|
local hash
|
||||||
hash=$(echo -n "$serial-dm9601" | md5sum | cut -c1-10)
|
hash=$(echo -n "$serial-dm9601" | md5sum | cut -c1-10)
|
||||||
@@ -83,6 +75,12 @@ generate_unique_mac() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Função para obter o MAC atual da interface
|
||||||
|
get_current_mac() {
|
||||||
|
local interface="$1"
|
||||||
|
ip link show "$interface" | awk '/ether/ {print $2}' | tr '[:upper:]' '[:lower:]'
|
||||||
|
}
|
||||||
|
|
||||||
# Função para definir MAC imediatamente
|
# Função para definir MAC imediatamente
|
||||||
set_mac() {
|
set_mac() {
|
||||||
local interface="$1"
|
local interface="$1"
|
||||||
@@ -94,6 +92,7 @@ set_mac() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
log "A definir MAC $mac em $interface..."
|
log "A definir MAC $mac em $interface..."
|
||||||
|
|
||||||
if ip link set "$interface" down && \
|
if ip link set "$interface" down && \
|
||||||
ip link set dev "$interface" address "$mac" && \
|
ip link set dev "$interface" address "$mac" && \
|
||||||
ip link set "$interface" up; then
|
ip link set "$interface" up; then
|
||||||
@@ -105,13 +104,14 @@ set_mac() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Função para criar regra Udev
|
# Função para criar/atualizar regra Udev
|
||||||
setup_udev_persistence() {
|
setup_udev_persistence() {
|
||||||
local interface="$1"
|
local interface="$1"
|
||||||
local target_mac="$2"
|
local target_mac="$2"
|
||||||
|
|
||||||
local original_mac
|
local original_mac
|
||||||
original_mac=$(ip link show "$interface" | awk '/ether/ {print $2}' | tr '[:upper:]' '[:lower:]')
|
local rule_content
|
||||||
|
|
||||||
|
original_mac=$(get_current_mac "$interface")
|
||||||
target_mac=$(echo "$target_mac" | tr '[:upper:]' '[:lower:]')
|
target_mac=$(echo "$target_mac" | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
if [ -z "$original_mac" ]; then
|
if [ -z "$original_mac" ]; then
|
||||||
@@ -120,70 +120,133 @@ setup_udev_persistence() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Cria o conteúdo da regra
|
# Cria o conteúdo da regra
|
||||||
local rule_content="ACTION==\"add\", SUBSYSTEM==\"net\", ATTR{address}==\"$original_mac\", RUN+=\"/usr/bin/ip link set dev \$name address $target_mac\""
|
rule_content="ACTION==\"add\", SUBSYSTEM==\"net\", ATTR{address}==\"$original_mac\", RUN+=\"/usr/bin/ip link set dev \$name address $target_mac\""
|
||||||
|
|
||||||
|
# Cria diretório se não existir
|
||||||
|
mkdir -p "$(dirname "$UDEV_RULES_FILE")"
|
||||||
|
|
||||||
# Escreve no ficheiro de regras
|
# Escreve no ficheiro de regras
|
||||||
echo "$rule_content" > "$UDEV_RULES_FILE"
|
echo "$rule_content" > "$UDEV_RULES_FILE"
|
||||||
|
|
||||||
# Verifica se o ficheiro foi criado com sucesso
|
# Verifica se o ficheiro foi criado com sucesso
|
||||||
if [ -f "$UDEV_RULES_FILE" ]; then
|
if [ -f "$UDEV_RULES_FILE" ]; then
|
||||||
log "Sucesso: Ficheiro de regras Udev criado em $UDEV_RULES_FILE."
|
log "Sucesso: Ficheiro de regras Udev criado/atualizado em $UDEV_RULES_FILE."
|
||||||
log "Conteúdo da regra: $rule_content"
|
log "Conteúdo da regra: $rule_content"
|
||||||
else
|
else
|
||||||
log "Erro: Falha ao criar o ficheiro de regras Udev em $UDEV_RULES_FILE."
|
log "Erro: Falha ao criar/atualizar o ficheiro de regras Udev em $UDEV_RULES_FILE."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Recarrega as regras do udev
|
# Recarrega as regras do udev
|
||||||
if udevadm control --reload-rules; then
|
if udevadm control --reload-rules && udevadm trigger; then
|
||||||
log "Regras Udev recarregadas com sucesso."
|
log "Regras Udev recarregadas e aplicadas com sucesso."
|
||||||
|
return 0
|
||||||
else
|
else
|
||||||
log "Erro: Falha ao recarregar regras Udev."
|
log "Erro: Falha ao recarregar/aplicar regras Udev."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Função robusta para verificar persistência
|
# Função para verificar se a persistência está configurada corretamente
|
||||||
is_persistence_configured() {
|
is_persistence_configured() {
|
||||||
if [ -f "$UDEV_RULES_FILE" ]; then
|
local current_mac
|
||||||
if [ -s "$UDEV_RULES_FILE" ]; then
|
local udev_mac
|
||||||
log "Ficheiro de persistência encontrado: $UDEV_RULES_FILE"
|
|
||||||
return 0
|
if [ ! -f "$UDEV_RULES_FILE" ] || [ ! -s "$UDEV_RULES_FILE" ]; then
|
||||||
else
|
log "Ficheiro de persistência não encontrado ou vazio."
|
||||||
log "Ficheiro de persistência existe mas está vazio. Invalidando."
|
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
current_mac=$(get_current_mac "$IFACE")
|
||||||
|
udev_mac=$(grep -oP 'address \K([0-9a-f]{2}:){5}[0-9a-f]{2}' "$UDEV_RULES_FILE")
|
||||||
|
|
||||||
|
if [ "$current_mac" = "$udev_mac" ]; then
|
||||||
|
log "Persistência verificada: MAC atual ($current_mac) coincide com regra Udev."
|
||||||
|
return 0
|
||||||
else
|
else
|
||||||
log "Ficheiro de persistência NÃO encontrado."
|
log "Persistência desatualizada: MAC atual ($current_mac) não coincide com regra Udev ($udev_mac)."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Função para desativar Wi-Fi
|
||||||
|
disable_wifi() {
|
||||||
|
# Cria diretório de log se não existir
|
||||||
|
mkdir -p /var/log
|
||||||
|
|
||||||
|
# Aguarda 60 segundos antes de verificar IP e desativar Wi-Fi
|
||||||
|
log "A aguardar 60 segundos antes de verificar IP de $IFACE e desativar Wi-Fi..."
|
||||||
|
sleep 60
|
||||||
|
|
||||||
|
# Verifica se eth0 tem IP antes de desativar Wi-Fi
|
||||||
|
if has_ip_address "$IFACE"; then
|
||||||
|
if ip link show "$WLAN_IFACE" &> /dev/null; then
|
||||||
|
if ip link set "$WLAN_IFACE" down; then
|
||||||
|
log "Wi-Fi ($WLAN_IFACE) desativado com sucesso ($IFACE tem IP)"
|
||||||
|
else
|
||||||
|
log "Falha ao desativar Wi-Fi ($WLAN_IFACE)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log "Interface $WLAN_IFACE não encontrada (Wi-Fi já desativado?)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log "$IFACE não tem endereço IP. Wi-Fi permanece ativo."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Tarefa em Background para monitorizar rede
|
# Tarefa em Background para monitorizar rede
|
||||||
monitor_network_task() {
|
monitor_network_task() {
|
||||||
log "Monitor: A iniciar verificação de rede (aguardando 60s)..."
|
log "Monitor: A iniciar verificação de rede (aguardando 60s)..."
|
||||||
sleep 60
|
sleep 60
|
||||||
|
|
||||||
local interface="eth0"
|
if ip link show "$IFACE" &> /dev/null; then
|
||||||
local wlan="wlan0"
|
if ip link show "$IFACE" | grep -q "NO-CARRIER"; then
|
||||||
|
log "Monitor: Interface $IFACE sem cabo (NO-CARRIER). A ativar Wi-Fi..."
|
||||||
if ip link show "$interface" &> /dev/null; then
|
if ip link show "$WLAN_IFACE" &> /dev/null; then
|
||||||
if ip link show "$interface" | grep -q "NO-CARRIER"; then
|
ip link set "$WLAN_IFACE" up
|
||||||
log "Monitor: Interface $interface sem cabo (NO-CARRIER). A ativar Wi-Fi..."
|
log "Monitor: Wi-Fi ($WLAN_IFACE) ativado."
|
||||||
if ip link show "$wlan" &> /dev/null; then
|
|
||||||
ip link set "$wlan" up
|
|
||||||
log "Monitor: Wi-Fi ($wlan) ativado."
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
log "Monitor: Interface $interface ativa. Nenhuma ação necessária."
|
log "Monitor: Interface $IFACE ativa. Nenhuma ação necessária."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Função principal para configurar MAC
|
||||||
|
configure_mac() {
|
||||||
|
local target_mac="$1"
|
||||||
|
|
||||||
|
# Validação do MAC
|
||||||
|
if [[ ! "$target_mac" =~ ^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$ ]]; then
|
||||||
|
log "MAC Address inválido: $target_mac"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "A configurar sistema com MAC: $target_mac"
|
||||||
|
|
||||||
|
# Aplica o MAC na sessão atual
|
||||||
|
if set_mac "$IFACE" "$target_mac"; then
|
||||||
|
# Atualiza a regra Udev independentemente do estado anterior
|
||||||
|
if setup_udev_persistence "$IFACE" "$target_mac"; then
|
||||||
|
log "Configuração de MAC e persistência concluída com sucesso."
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
log "Aviso: MAC definido mas persistência falhou."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log "Aviso: Falha ao definir MAC em tempo real, mas a tentar criar persistência..."
|
||||||
|
if setup_udev_persistence "$IFACE" "$target_mac"; then
|
||||||
|
log "Persistência criada, mas MAC não foi aplicado na sessão atual."
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
log "Erro: Falha completa na configuração de MAC."
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# --- Execução Principal ---
|
# --- Execução Principal ---
|
||||||
|
|
||||||
if [ "$(id -u)" -ne 0 ]; then
|
if [ "$(id -u)" -ne 0 ]; then
|
||||||
echo "Este script deve ser executado como root." >&2
|
echo "Este script deve ser executado como root." >&2
|
||||||
exit 1
|
exit 1
|
||||||
@@ -191,50 +254,31 @@ fi
|
|||||||
|
|
||||||
mkdir -p "$(dirname "$LOG_FILE")"
|
mkdir -p "$(dirname "$LOG_FILE")"
|
||||||
|
|
||||||
# 1. Verificar Persistência Existente
|
# 1. Verificar se a interface existe
|
||||||
if is_persistence_configured; then
|
if ! ip link show "$IFACE" &> /dev/null; then
|
||||||
log "Configuração já persistida no sistema. A saltar configuração de MAC."
|
log "Erro: Interface $IFACE não disponível. A sair."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Função auxiliar para verificar se a interface tem IP
|
# 2. Verificar se já existe configuração de persistência
|
||||||
has_ip_address() {
|
if is_persistence_configured; then
|
||||||
local iface="$1"
|
log "Configuração de persistência verificada. A saltar configuração inicial."
|
||||||
if ip addr show "$iface" | grep -q "inet "; then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Verifica se eth0 tem IP antes de desativar Wi-Fi
|
# Verifica se eth0 tem IP antes de desativar Wi-Fi
|
||||||
if has_ip_address "eth0"; then
|
if has_ip_address "$IFACE"; then
|
||||||
if ! pgrep -f "disable_wifi" > /dev/null; then
|
if ! pgrep -f "disable_wifi" > /dev/null; then
|
||||||
disable_wifi &
|
disable_wifi &
|
||||||
else
|
else
|
||||||
log "disable_wifi já está em execução."
|
log "disable_wifi já está em execução."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
log "eth0 não tem endereço IP. Wi-Fi permanece ativo."
|
log "$IFACE não tem endereço IP. Wi-Fi permanece ativo."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
monitor_network_task &
|
monitor_network_task &
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 2. Esperar pela Interface de Rede (Importante para boot/curl)
|
|
||||||
IFACE="eth0"
|
|
||||||
log "A aguardar pela interface $IFACE..."
|
|
||||||
for i in {1..30}; do
|
|
||||||
if ip link show "$IFACE" &> /dev/null; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
if ! ip link show "$IFACE" &> /dev/null; then
|
|
||||||
log "Erro: Interface $IFACE não disponível após 30 segundos. A sair."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 3. Determinar o MAC Address
|
# 3. Determinar o MAC Address
|
||||||
TARGET_MAC=""
|
TARGET_MAC=""
|
||||||
|
|
||||||
@@ -246,33 +290,21 @@ else
|
|||||||
# Verificar se é boot (não interativo e sem /dev/tty disponível)
|
# Verificar se é boot (não interativo e sem /dev/tty disponível)
|
||||||
if [ ! -t 0 ] && [ ! -e /dev/tty ]; then
|
if [ ! -t 0 ] && [ ! -e /dev/tty ]; then
|
||||||
# Modo boot: Não fazer nada, assumindo que já foi configurado
|
# Modo boot: Não fazer nada, assumindo que já foi configurado
|
||||||
log "${YELLOW}Modo boot: A saltar configuração de MAC (assumindo que já foi configurado)${NC}"
|
log "Modo boot: A saltar configuração de MAC (assumindo que já foi configurado)"
|
||||||
|
|
||||||
# Função auxiliar para verificar se a interface tem IP
|
if has_ip_address "$IFACE"; then
|
||||||
has_ip_address() {
|
|
||||||
local iface="$1"
|
|
||||||
if ip addr show "$iface" | grep -q "inet "; then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Verifica se eth0 tem IP antes de desativar Wi-Fi
|
|
||||||
if has_ip_address "eth0"; then
|
|
||||||
if ! pgrep -f "disable_wifi" > /dev/null; then
|
if ! pgrep -f "disable_wifi" > /dev/null; then
|
||||||
disable_wifi &
|
disable_wifi &
|
||||||
else
|
else
|
||||||
log "disable_wifi já está em execução."
|
log "disable_wifi já está em execução."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
log "eth0 não tem endereço IP. Wi-Fi permanece ativo."
|
log "$IFACE não tem endereço IP. Wi-Fi permanece ativo."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
# Modo interativo ou via curl: Perguntar ao utilizador o que fazer
|
# Modo interativo: Perguntar ao utilizador o que fazer
|
||||||
if ask_confirmation "Deseja configurar um novo MAC para a interface eth0?" "y"; then
|
if ask_confirmation "Deseja configurar um novo MAC para a interface $IFACE?" "y"; then
|
||||||
if ask_confirmation "Deseja gerar um novo MAC único automaticamente?" "y"; then
|
if ask_confirmation "Deseja gerar um novo MAC único automaticamente?" "y"; then
|
||||||
TARGET_MAC=$(generate_unique_mac)
|
TARGET_MAC=$(generate_unique_mac)
|
||||||
log "MAC gerado automaticamente: $TARGET_MAC"
|
log "MAC gerado automaticamente: $TARGET_MAC"
|
||||||
@@ -288,29 +320,20 @@ else
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
log "${YELLOW}Configuração de MAC cancelada pelo utilizador${NC}"
|
log "Configuração de MAC cancelada pelo utilizador"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Validação simples do MAC
|
# 4. Configurar MAC e persistência
|
||||||
if [[ ! "$TARGET_MAC" =~ ^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$ ]]; then
|
if configure_mac "$TARGET_MAC"; then
|
||||||
log "MAC Address inválido ou vazio: $TARGET_MAC"
|
log "Configuração concluída com sucesso."
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 4. Aplicar Configuração
|
|
||||||
log "A configurar sistema com MAC: $TARGET_MAC"
|
|
||||||
|
|
||||||
if set_mac "$IFACE" "$TARGET_MAC"; then
|
|
||||||
setup_udev_persistence "$IFACE" "$TARGET_MAC"
|
|
||||||
else
|
else
|
||||||
log "Aviso: Falha ao definir MAC em tempo real, mas a tentar criar persistência..."
|
log "Aviso: Configuração concluída com alguns erros."
|
||||||
setup_udev_persistence "$IFACE" "$TARGET_MAC"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 5. Lançar Monitor de Rede
|
# 5. Lançar monitor de rede
|
||||||
monitor_network_task &
|
monitor_network_task &
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
Reference in New Issue
Block a user