#!/bin/bash # Script que configurará los equipos Ubuntu para dejar # sus parámetros de red preparados para introducirlos # en el dominio cepalencia.local # Declaro una función para salir cuando se produzca un error function error(){ clear echo "Se ha producido un error" echo "$1" echo "Pulse cualquier tecla para continuar." read -n1 -s NADA exit } # La función verifica muestra, antes de sustituir, el fichero # modificado con los parámetros necesarios, dando la opción de # salir sin aplicar las modificaciones function verifica(){ clear echo "Se introducirá la siguiente información en $1" more $FAUX until [ "$OPC" = "a" -o "$OPC" = "A" -o "$OPC" = "c" -o "$OPC" = "C" ] do echo "¿Desea continuar (c) o abortar (a)? " read -n1 -s OPC if [ "$OPC" = "c" -o "$OPC" = "C" ] then cp -f $FAUX $1 elif [ "$OPC" = "a" -o "$OPC" = "A" ] then echo "Finalizando script..." exit else echo "Opción incorrecta." sleep 3 fi done OPC="z" } # La función comprueba pedirá dirección IP hasta # que se indique una válida function comprueba() { CTR=0 while [ $CTR -eq 0 ] do CTR=1 [ `echo $DIRIP | tr "." " " | wc -w` -ne 4 ] && CTR=0 for((i=1;i<5;i++)) do OCT=`echo $DIRIP | cut -d. -f$i` [ $OCT -lt 0 -o $OCT -gt 255 ] && CTR=0 done if [ $CTR -eq 0 ] then clear echo "La IP $DIRIP no tiene un formato válido" echo "Indique la dirección IP de este equipo:" read DIRIP fi done return 0 } clear # Comprobamos si se ejecuta como root [ "$USER" = "root" ] || error "Tienes que ser root" # Crear variables con los valores de uso frecuente en el script MASCARA="255.255.255.0" DNS1="10.10.10.3" DNS2="194.179.1.100" FCONFRED="/etc/network/interfaces" FCONFDNS="/etc/resolv.conf" FCONFHOST="/etc/hosts" FCONFNSS="/etc/nsswitch.conf" FAUX="/tmp/configred.aux" OPC="z" # Comprobamos que existan los archivos [ -f $FCONFRED ] || error "No se encontró $FCONFRED" [ -f $FCONFDNS ] || error "No se encontró $FCONFDNS" [ -f $FCONFHOST ] || error "No se encontró $FCONFHOST" [ -f $FCONFNSS ] || error "No se encontró $FCONFNSS" # Pedimos una IP para crear el archivo interfaces echo "Indique la dirección IP de este equipo:" read DIRIP # Pasamos la IP a una función que se estará ejecutando # hasta que comprueba # Calculamos el gateway GATEWAY=`echo $DIRIP | cut -d. -f1-3` GATEWAY="`echo $GATEWAY`.1" # Creamos el fichero interfaces echo "auto lo" > $FAUX echo "iface lo inet loopback" >> $FAUX echo "" >> $FAUX echo "auto eth0" >> $FAUX echo "iface eth0 inet static" >> $FAUX echo "address $DIRIP" >> $FAUX echo "netmask $MASCARA" >> $FAUX echo "gateway $GATEWAY" >> $FAUX verifica $FCONFRED echo "nameserver $DNS1" > $FAUX echo "nameserver $DNS2" >> $FAUX verifica $FCONFDNS more $FCONFHOST | grep -v ^10.10.10.3 > $FAUX cp -f $FAUX $FCONFHOST echo -e "10.10.10.3\tCEPALENCIA.LOCAL" > $FAUX echo -e "10.10.10.3\tservers-03.cepalencia.es" >> $FAUX more $FCONFHOST >> $FAUX verifica $FCONFHOST # Cambio la línes del fichero /etc/nsswitch.conf CONT=`more $FCONFNSS | wc -l` NLINEA=1 rm -f $FAUX until [ $NLINEA -eq $CONT ] do LINEA=`more $FCONFNSS | head -$NLINEA | tail -1` CTR=`echo $LINEA | grep ^hosts: | wc -l` if [ $CTR -eq 0 ] then echo $LINEA >> $FAUX else echo -e "hosts:\tfiles dns" >> $FAUX fi NLINEA=`expr $NLINEA + 1` done verifica $FCONFNSS clear echo "Se han modificado los ficheros necesarios," echo "pulse cualquier tecla para reiniciar la red." read -n1 -s NADA /etc/init.d/networking restart exit