El siguiente código fuente corresponde a un script cuyo objetivo es permitir la configuración de una única interfaz de red en una máquina Linux.
Hay que decir que el script no ha sido completado ya que se utilizó para comenzar las explicaciones relacionadas con la configuración de red de máquinas Linux y recordatorio de shellscripts. Dada la posible complejidad que pudiera derivarse al intentar dotar a este script de capacidad para configurar más de un interfaz de red, se optó por hacerlo para una sola.
Debemos tener en cuenta que si estamos trabajando con cualquier distro cuya gestión de interfaces de red esta realizada a través de Network Manager, será necesario desactivar dicho sistema de gestión.
Para ello bastaría con acceder al archivo de configuración de NetworkManager (/etc/NetworkManager/NetworkManager.conf) en la máquina en cuestión y poner a "false" la variable "managed". Si tienes alguna duda al respecto, te aconsejo que accedas al siguiente enlace: Desactivación de NetworkManager en Ubuntu.
Aquí teneis el código fuente:
#!/bin/bash
#Script que permite configurar de manera estática el direccionamiento IP
#de una tarjeta de red en una máquina Ubuntu Desktop 12.04.
#Para que los no nos afecte el gestor de red NetworkManager de Ubuntu
#deberemos desactivarlo. Accederemos a /etc/NetworkManager/NetworkManager.conf
#lo editaremos y modificaremos la variable "managed" poniéndola a false.
#los archivos a tener en cuenta en este script serían:
#a) Configuración IP: /etc/network/interfaces
#b) Resolución de nombres WAN: /etc/resolv.conf
#c) Resolución de nombre LAN: /etc/hosts (opcional)
#--------------------
# FUNCIONES
#--------------------
function titulo()
{
clear
echo "****************************************************"
echo "* CONFIGURADOR DE DIRECCIONAMIENTO IP ESTÁTICO *"
echo "****************************************************"
}
function copiaseg()
{
echo "Realizando copias de seguridad..."
if [ -f /etc/network/interfaces ]
then
cp /etc/network/interfaces /etc/network/interfaces.original
if [ $? -eq 0 ]
then
echo "El archivo interfaces ha sido salvaguardado con éxito."
else
echo "Error al salvaguardar el archivo interfaces."
fi
fi
if [ -f /etc/resolv.conf ]
then
cp /etc/resolv.conf /etc/resolv_original.conf
if [ $? -eq 0 ]
then
echo "El archivo resolv.conf ha sido salvaguardado con éxito."
else
echo "Error al salvaguardar el archivo resolv.conf."
fi
fi
}
function grabar_configuracion()
{
echo "----------------------------------------------------"
echo "La nueva configuración de red introducida es: "
echo "Interfaz: $1"
echo "Dirección IP: $2"
echo "Máscara de red: $3"
echo "Puerta de enlace / Gateway: $4"
echo "DNS 1º: $5"
echo "DNS 2º: $6"
echo "----------------------------------------------------"
# A partir de aquí abría que reescribir completos los archivos
# de configuración interfaces y resolv.conf
#Modificación de /etc/network/interfaces
interfaces="/etc/network/interfaces"
echo "auto lo" > $interfaces
echo "iface lo inet loopback" >> $interfaces
echo "auto $1" >> $interfaces
echo "iface $1 inet static" >> $interfaces
echo "address $2" >> $interfaces
echo "mask $3" >> $interfaces
echo "gateway $4" >> $interfaces
#Modificación de /etc/resolv.conf
resolv="/etc/resolv.conf"
echo "#Generado por script configuraip.sh" > $resolv
echo "nameserver $5" >> $resolv
echo "nameserver $6" >> $resolv
#reiniciamos los servicios de red para
#que la nueva configuración tenga efecto
/etc/init.d/networking restart
}
#--------------------
# PROGRAMA PRINCIPAL
#--------------------
titulo
if [ $LOGNAME != "root" ]
then
read -p "Lo siento, este script debe ser ejecutado con privilegios de root."
exit 1
fi
#Mostramos los interfaces de red
titulo
echo "Mostrando interfaces de red actuales..."
for nic in `lshw -short -class network | grep eth | tr -s " " | cut -f2 -d" " `
do
echo "* Interfaz: $nic"
done
echo "-----------------------------------------------------"
nic_elegida=""
while [ "$nic_elegida" == "" ]
do
read -p "Elige la interfaz que deseas configurar: " nic_elegida
done
nic_valida=1
for nic in `lshw -short -class network | grep eth | tr -s " " | cut -f2 -d" " `
do
if [ $nic == $nic_elegida ]
then
nic_valida=0
fi
done
if [ $nic_valida -ne 0 ]
then
echo "Error, la interfaz $nic_elegida no es válida."
read -p "Pulsa una tecla para cerrar el script..."
exit 1
fi
echo "La interfaz elegida es: $nic_elegida"
read -p "Introduce la nueva dirección ip estática: " ip
read -p "Introduce la nueva máscara de red: " mascara
read -p "Introduce la puerta de enlace: " puerta
read -p "Introduce el DNS 1º: " dns1
read -p "Introduce el DNS 2º: " dns2
echo
read -p "Pulse una tecla para continuar."
titulo
respuesta=""
while [ "$respuesta" == "" ]
do
read -p "Desea grabar estos datos de configuración (S/N): " respuesta
case $respuesta in
s|S)copiaseg; grabar_configuracion $nic_elegida $ip $mascara $puerta $dns1 $dns2; break;;
n|N)echo "Ok, no se modificarán los archivos de configuración"; read; break;;
*) echo "No ha introducido una respuesta válida, vuelva a intentarlo.";;
esac
done
echo "Fin del script."
read
exit 0
No hay comentarios:
Publicar un comentario