mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2025-06-28 12:16:53 +00:00
Delete scripts/repair_networkl.sh
This commit is contained in:
parent
eab7dfe21c
commit
565ab3350c
@ -1,244 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Configuración
|
|
||||||
SCRIPT_VERSION="1.5"
|
|
||||||
LOG_FILE="/var/log/repair_network.log"
|
|
||||||
|
|
||||||
# Colores para salida
|
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
YELLOW='\033[0;33m'
|
|
||||||
NC='\033[0m' # No Color
|
|
||||||
|
|
||||||
# Cargar el archivo de idioma
|
|
||||||
if [ -f "/usr/local/bin/ProxMenux/lang/es.lang" ]; then
|
|
||||||
source "/usr/local/bin/ProxMenux/lang/es.lang"
|
|
||||||
else
|
|
||||||
echo "Error: No se pudo cargar el archivo de idioma."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Funciones de utilidad
|
|
||||||
log() {
|
|
||||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
|
|
||||||
echo -e "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
error() {
|
|
||||||
log "${RED}${NETWORK_ERROR}: $1${NC}"
|
|
||||||
}
|
|
||||||
|
|
||||||
success() {
|
|
||||||
log "${GREEN}${NETWORK_SUCCESS}: $1${NC}"
|
|
||||||
}
|
|
||||||
|
|
||||||
warning() {
|
|
||||||
log "${YELLOW}${NETWORK_WARNING}: $1${NC}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Función para detectar todas las interfaces de red
|
|
||||||
detect_all_interfaces() {
|
|
||||||
all_interfaces=$(ip -o link show | awk -F': ' '{print $2}' | grep -v lo)
|
|
||||||
physical_interfaces=$(echo "$all_interfaces" | grep -v @)
|
|
||||||
vlan_interfaces=$(echo "$all_interfaces" | grep @)
|
|
||||||
log "$NETWORK_ALL_INTERFACES: $all_interfaces"
|
|
||||||
log "$NETWORK_PHYSICAL_INTERFACES: $physical_interfaces"
|
|
||||||
log "$NETWORK_VLAN_INTERFACES: $vlan_interfaces"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Función para obtener interfaces configuradas
|
|
||||||
get_configured_interfaces() {
|
|
||||||
configured_interfaces=$(grep -E "^auto|^allow-hotplug" /etc/network/interfaces | awk '{print $2}' | sort | uniq)
|
|
||||||
log "$NETWORK_CONFIGURED_INTERFACES: $configured_interfaces"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Función para verificar y corregir la configuración de VLANs
|
|
||||||
check_and_fix_vlans() {
|
|
||||||
for vlan in $vlan_interfaces; do
|
|
||||||
local parent_interface=$(echo $vlan | cut -d@ -f2)
|
|
||||||
local vlan_id=$(echo $vlan | cut -d. -f2)
|
|
||||||
|
|
||||||
if ! grep -q "^auto $vlan" /etc/network/interfaces; then
|
|
||||||
log "$NETWORK_VLAN_NOT_CONFIGURED: $vlan"
|
|
||||||
configure_vlan $vlan
|
|
||||||
else
|
|
||||||
local configured_parent=$(grep -A2 "iface $vlan" /etc/network/interfaces | grep "vlan-raw-device" | awk '{print $2}')
|
|
||||||
local configured_id=$(grep -A2 "iface $vlan" /etc/network/interfaces | grep "vlan_id" | awk '{print $2}')
|
|
||||||
|
|
||||||
if [ "$configured_parent" != "$parent_interface" ] || [ "$configured_id" != "$vlan_id" ]; then
|
|
||||||
log "$NETWORK_VLAN_MISMATCH: $vlan"
|
|
||||||
fix_vlan_config $vlan $parent_interface $vlan_id
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Función para configurar una VLAN
|
|
||||||
configure_vlan() {
|
|
||||||
local vlan=$1
|
|
||||||
local parent_interface=$(echo $vlan | cut -d@ -f2)
|
|
||||||
local vlan_id=$(echo $vlan | cut -d. -f2)
|
|
||||||
|
|
||||||
echo -e "\nauto $vlan\niface $vlan inet manual\n vlan-raw-device $parent_interface\n vlan_id $vlan_id" >> /etc/network/interfaces
|
|
||||||
log "$NETWORK_VLAN_CONFIGURED: $vlan"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Función para corregir la configuración de una VLAN
|
|
||||||
fix_vlan_config() {
|
|
||||||
local vlan=$1
|
|
||||||
local parent_interface=$2
|
|
||||||
local vlan_id=$3
|
|
||||||
|
|
||||||
sed -i "/iface $vlan/,/^$/ s/vlan-raw-device.*/vlan-raw-device $parent_interface/" /etc/network/interfaces
|
|
||||||
sed -i "/iface $vlan/,/^$/ s/vlan_id.*/vlan_id $vlan_id/" /etc/network/interfaces
|
|
||||||
log "$NETWORK_VLAN_FIXED: $vlan"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Función para verificar y corregir la configuración de puentes
|
|
||||||
check_and_fix_bridge_ports() {
|
|
||||||
local bridge=$1
|
|
||||||
local old_port=$(grep "bridge-ports" /etc/network/interfaces | grep $bridge | awk '{print $2}')
|
|
||||||
|
|
||||||
if ! ip link show $old_port &>/dev/null; then
|
|
||||||
log "$NETWORK_BRIDGE_PORT_MISSING: $bridge - $old_port"
|
|
||||||
|
|
||||||
local candidates=$(ip -o link show | awk -F': ' '$2 !~ /^(lo|vmbr|bond|dummy)/ {print $2}')
|
|
||||||
|
|
||||||
echo "$NETWORK_SELECT_NEW_BRIDGE_PORT: $bridge"
|
|
||||||
echo "$NETWORK_AVAILABLE_INTERFACES:"
|
|
||||||
|
|
||||||
local i=1
|
|
||||||
for iface in $candidates; do
|
|
||||||
local state=$(cat /sys/class/net/$iface/operstate)
|
|
||||||
local ip_addr=$(ip -o -4 addr show dev $iface | awk '{print $4}')
|
|
||||||
local config_type=$(grep -A1 "iface $iface" /etc/network/interfaces | grep -q "dhcp" && echo "dhcp" || echo "static")
|
|
||||||
local vlan=""
|
|
||||||
if [[ $iface == *@* ]]; then
|
|
||||||
vlan=" (VLAN)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$ip_addr" ]; then
|
|
||||||
ip_addr="No IP"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$i) $iface$vlan - Estado: $state, IP: $ip_addr, Configuración: $config_type"
|
|
||||||
((i++))
|
|
||||||
done
|
|
||||||
|
|
||||||
read -p "$NETWORK_SELECT_INTERFACE: " selection
|
|
||||||
|
|
||||||
if [[ $selection =~ ^[0-9]+$ ]] && [ $selection -le $i ]; then
|
|
||||||
local new_port=$(echo "$candidates" | sed -n "${selection}p")
|
|
||||||
sed -i "s/bridge-ports $old_port/bridge-ports $new_port/" /etc/network/interfaces
|
|
||||||
log "$NETWORK_BRIDGE_PORT_UPDATED: $bridge - $old_port -> $new_port"
|
|
||||||
else
|
|
||||||
log "$NETWORK_BRIDGE_PORT_UPDATE_FAILED: $bridge"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Función para reiniciar el servicio de red
|
|
||||||
restart_networking() {
|
|
||||||
log "$NETWORK_RESTARTING"
|
|
||||||
systemctl restart networking
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
success "$NETWORK_RESTART_SUCCESS"
|
|
||||||
else
|
|
||||||
error "$NETWORK_RESTART_FAILED"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Función para verificar la conectividad de red
|
|
||||||
check_network_connectivity() {
|
|
||||||
if ping -c 4 8.8.8.8 &> /dev/null; then
|
|
||||||
success "$NETWORK_CONNECTIVITY_OK"
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
warning "$NETWORK_CONNECTIVITY_FAILED"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Función para configurar manualmente una interfaz
|
|
||||||
configure_interface_manually() {
|
|
||||||
local interface=$1
|
|
||||||
local current_ip=$(grep -A2 "iface $interface" /etc/network/interfaces | grep "address" | awk '{print $2}')
|
|
||||||
local current_gateway=$(grep -A4 "iface $interface" /etc/network/interfaces | grep "gateway" | awk '{print $2}')
|
|
||||||
|
|
||||||
echo "Configurando $interface:"
|
|
||||||
echo "Dirección IP actual: $current_ip"
|
|
||||||
read -p "¿Desea cambiar la dirección IP? (s/n): " change_ip
|
|
||||||
if [[ $change_ip =~ ^[Ss]$ ]]; then
|
|
||||||
read -p "Nueva dirección IP: " new_ip
|
|
||||||
sed -i "/iface $interface/,/^$/ s/address.*/address $new_ip/" /etc/network/interfaces
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Puerta de enlace actual: $current_gateway"
|
|
||||||
read -p "¿Desea cambiar la puerta de enlace? (s/n): " change_gateway
|
|
||||||
if [[ $change_gateway =~ ^[Ss]$ ]]; then
|
|
||||||
read -p "Nueva puerta de enlace: " new_gateway
|
|
||||||
sed -i "/iface $interface/,/^$/ s/gateway.*/gateway $new_gateway/" /etc/network/interfaces
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $interface == *@* ]]; then
|
|
||||||
local parent_interface=$(echo $interface | cut -d@ -f2)
|
|
||||||
local vlan_id=$(echo $interface | cut -d. -f2)
|
|
||||||
echo "Configuración de VLAN:"
|
|
||||||
echo "Interfaz padre actual: $parent_interface"
|
|
||||||
echo "ID de VLAN actual: $vlan_id"
|
|
||||||
read -p "¿Desea cambiar la configuración de VLAN? (s/n): " change_vlan
|
|
||||||
if [[ $change_vlan =~ ^[Ss]$ ]]; then
|
|
||||||
read -p "Nueva interfaz padre: " new_parent
|
|
||||||
read -p "Nuevo ID de VLAN: " new_vlan_id
|
|
||||||
sed -i "/iface $interface/,/^$/ s/vlan-raw-device.*/vlan-raw-device $new_parent/" /etc/network/interfaces
|
|
||||||
sed -i "/iface $interface/,/^$/ s/vlan_id.*/vlan_id $new_vlan_id/" /etc/network/interfaces
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
log "$NETWORK_INTERFACE_MANUALLY_CONFIGURED: $interface"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Función para actualizar la IP de Proxmox
|
|
||||||
update_proxmox_ip() {
|
|
||||||
local main_interface=$(ip route | grep default | awk '{print $5}')
|
|
||||||
local main_ip=$(ip addr show $main_interface | grep "inet " | awk '{print $2}' | cut -d/ -f1)
|
|
||||||
if [ -n "$main_ip" ]; then
|
|
||||||
sed -i "s/^IP_ADDRESS=.*/IP_ADDRESS=\"$main_ip\"/" /etc/pve/storage.cfg
|
|
||||||
log "$PROXMOX_IP_UPDATED: $main_ip"
|
|
||||||
else
|
|
||||||
warning "$PROXMOX_IP_UPDATE_FAILED"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Función principal
|
|
||||||
main() {
|
|
||||||
log "$NETWORK_REPAIR_STARTED"
|
|
||||||
|
|
||||||
detect_all_interfaces
|
|
||||||
get_configured_interfaces
|
|
||||||
|
|
||||||
check_and_fix_vlans
|
|
||||||
|
|
||||||
for bridge in $(grep "iface.*inet static" /etc/network/interfaces | awk '{print $2}'); do
|
|
||||||
check_and_fix_bridge_ports $bridge
|
|
||||||
done
|
|
||||||
|
|
||||||
update_proxmox_ip
|
|
||||||
restart_networking
|
|
||||||
|
|
||||||
if ! check_network_connectivity; then
|
|
||||||
read -p "$NETWORK_MANUAL_CONFIG_PROMPT (s/n): " manual_config
|
|
||||||
if [[ $manual_config =~ ^[Ss]$ ]]; then
|
|
||||||
for interface in $(grep "iface.*inet" /etc/network/interfaces | awk '{print $2}'); do
|
|
||||||
configure_interface_manually $interface
|
|
||||||
done
|
|
||||||
restart_networking
|
|
||||||
check_network_connectivity
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
log "$NETWORK_REPAIR_COMPLETED"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Ejecutar la función principal
|
|
||||||
main
|
|
Loading…
x
Reference in New Issue
Block a user