diff --git a/menu/menu-ip b/menu/menu-ip new file mode 100644 index 0000000..4794141 --- /dev/null +++ b/menu/menu-ip @@ -0,0 +1,147 @@ +#!/bin/bash +if [ "$(cat /proc/cpuinfo | grep 'Raspberry')" != "" ]; then +# menu-ip +sudo cat > /bin/menu-ip <<- "EOF" +#!/bin/bash + +# Función para convertir una máscara de subred en notación CIDR +mask_to_cidr() { + local IFS + IFS=. + read -r i1 i2 i3 i4 <<< "$1" + local cidr=0 + local octets=("$i1" "$i2" "$i3" "$i4") + + for octet in "${octets[@]}"; do + while [ "$octet" -ne 0 ]; do + cidr=$((cidr + octet % 2)) + octet=$((octet / 2)) + done + done + + echo "$cidr" +} + +while : +do + choix=$(whiptail --title "IP Tools" --menu "Selecciona una opción:" 15 60 6 \ + 1 "Ver IP Local" \ + 2 "Ver IP Pública" \ + 3 "Set IP Static /DHCP" \ + 4 "Salir" 3>&1 1>&2 2>&3) + + exitstatus=$? + + if [ $exitstatus = 0 ]; then + echo "Opción seleccionada:" $choix + else + echo "Has elegido cancelar. Saliendo..." + break + fi + + case $choix in + 1) + # Ver IP Local (muestra la IP local de los dispositivos) + device_list=$(ip -o link show | awk -F: '$2 !~ /lo/{print $2}') + ip_list="" + for device in $device_list; do + local_ip=$(ip -4 -o addr show $device | awk '{print $4}') + ip_list="$ip_list$device = $local_ip\n" + done + whiptail --title "IP Local" --msgbox "Tu IP local es:\n\n$ip_list" 15 60 + ;; + 2) + # Ver IP Pública (muestra la IP pública) + public_ip=$(curl -s https://ifconfig.me) + whiptail --title "IP Pública" --msgbox "Tu IP pública es:\n\n$public_ip" 10 40 + ;; + 3) + # Configurar Static / DHCP (muestra la lista de dispositivos y permite seleccionar uno) + device_list=$(ip -o link show | awk -F: '$2 !~ /lo/{print $2}') + selected_device="" + + while [ -z "$selected_device" ]; do + options=() + for device in $device_list; do + options+=("$device" "") + done + + selected_device=$(whiptail --title "Static / DHCP" --menu "Selecciona un dispositivo de red:" 15 60 4 "${options[@]}" 3>&1 1>&2 2>&3) + + if [ $? -ne 0 ]; then + echo "Has elegido cancelar. Saliendo..." + break + fi + + if [ "$selected_device" == "eth0" ]; then + device_name="Wired connection 1" + elif [ "$selected_device" == "wlan0" ]; then + device_name=$(nmcli -t -f active,ssid dev wifi | egrep '^yes' | cut -d: -f2) + fi + + choice=$(whiptail --title "Static / DHCP" --menu "Selecciona una opción para $selected_device:" 15 60 4 \ + 1 "Configurar DHCP" \ + 2 "Configurar Static" \ + 3 "Volver" 3>&1 1>&2 2>&3) + + case $choice in + 1) + # Configurar DHCP para el dispositivo seleccionado + sudo nmcli con mod "$device_name" ipv4.addresses "" ipv4.gateway "" + sudo nmcli con mod "$device_name" ipv4.method auto + sudo nmcli con up "$device_name" + sudo systemctl stop NetworkManager && + sudo systemctl start NetworkManager + whiptail --title "Static / DHCP" --msgbox "Se ha configurado DHCP para $device_name." 10 40 + ;; + 2) + # Configurar IP estática para el dispositivo seleccionado + ip="" + mask="" + gateway="" + dns1="" + dns2="" + whiptail --title "Static / DHCP" --inputbox "Ingresa la IP estática para $device_name:" 10 60 2>/tmp/ip.txt + ip=$(cat /tmp/ip.txt) + whiptail --title "Static / DHCP" --inputbox "Ingresa la máscara de subred en formato de octetos para $device_name (ejemplo: 255.255.255.0):" 10 60 2>/tmp/mask.txt + mask=$(cat /tmp/mask.txt) + cidr=$(mask_to_cidr "$mask") + whiptail --title "Static / DHCP" --inputbox "Ingresa la puerta de enlace (gateway) para $device_name:" 10 60 2>/tmp/gateway.txt + gateway=$(cat /tmp/gateway.txt) + whiptail --title "Static / DHCP" --inputbox "Ingresa la dirección DNS primaria (dns1) para $device_name:" 10 60 2>/tmp/dns1.txt + dns1=$(cat /tmp/dns1.txt) + whiptail --title "Static / DHCP" --inputbox "Ingresa la dirección DNS secundaria (dns2) para $device_name:" 10 60 2>/tmp/dns2.txt + dns2=$(cat /tmp/dns2.txt) + + # Configurar IP estática utilizando nmcli + sudo nmcli con mod "$device_name" ipv4.method manual ipv4.addresses "$ip/$cidr" ipv4.gateway "$gateway" ipv4.dns "$dns1 $dns2" + sudo nmcli con up "$device_name" + sudo systemctl restart NetworkManager + whiptail --title "Static / DHCP" --msgbox "Se ha configurado una IP estática para $device_name." 10 40 + ;; + 3) + # Volver al menú anterior + selected_device="" + ;; + *) + ;; + esac + done + ;; + 4) + break + ;; + esac +done + +exit 0 +else + whiptail --title "IP Tools" --msgbox "Esta opcion solo esta disponible para Raspberry / This option is only available for Raspberry" 0 50 + exit 0 + +EOF + +chmod +x /bin/menu-ip +ln -sf /bin/menu-ip /bin/MENU-IP +chmod +x /bin/MENU* +fi \ No newline at end of file diff --git a/menu/menu-wifi-manager b/menu/menu-wifi-manager index 711d87d..93392d5 100644 --- a/menu/menu-wifi-manager +++ b/menu/menu-wifi-manager @@ -1,18 +1,20 @@ #!/bin/bash +if [ "$(cat /proc/cpuinfo | grep 'Raspberry')" != "" ]; then #menu-wifi -cat > /bin/menu-wifi-manager <<- "EOF" +sudo cat > /bin/menu-wifi-manager <<- "EOF" #!/bin/bash if [ "$(cat /proc/cpuinfo | grep 'Raspberry')" != "" ]; then while : do - choix=$(whiptail --title "WiFi Mannager" --menu "Selecciona una opción:" 15 60 7 \ + choix=$(whiptail --title "WiFi Mannager" --menu "Selecciona una opción:" 15 60 8 \ 1 "Mostrar redes Wi-Fi cercanas" \ 2 "Mostrar redes Wi-Fi almacenadas" \ 3 "Agregar nueva red Wi-Fi" \ 4 "Editar red Wi-Fi existente" \ 5 "Borrar red Wi-Fi" \ 6 "WiFi Signal Meter (wavemon)" \ - 7 "Salir" 3>&1 1>&2 2>&3) + 7 "IP Tools Manager" \ + 8 "Salir" 3>&1 1>&2 2>&3) exitstatus=$? @@ -131,6 +133,8 @@ do 6) sudo wavemon ;; 7) + menu-ip ;; + 8) break ;; esac @@ -146,3 +150,4 @@ EOF chmod +x /bin/menu-wifi-manager ln -sf /bin/menu-wifi-manager /bin/MENU-WIFI-MANAGER chmod +x /bin/MENU* +fi \ No newline at end of file