#!/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 "Pulse cualquier tecla para continuar." read -n1 -s NADA exit } clear if [ "$USER" != "root" ] then error fi # 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" FLOG="/var/log/configred.log" FAUX="/tmp/configred.aux" OPC="z" if [ ! -f $FCONFRED ] then error fi [ ! -f $FCONFDNS ] && error [ -f $FCONFHOST ] || error test -f $FCONFNSS || error echo "Indique la dirección IP de este equipo:" read DIRIP GATEWAY=`echo $DIRIP | cut -d. -f1-3` GATEWAY="`echo $GATEWAY`.1" 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 echo "Se introducirá la siguiente información en $FCONFRED" 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 $FCONFRED elif [ "$OPC" = "a" -o "$OPC" = "A" ] then echo "Finalizando script..." exit else echo "Opción incorrecta." sleep 3 fi done OPC="z" echo "nameserver $DNS1" > $FAUX echo "nameserver $DNS2" >> $FAUX echo "Se introducirá la siguiente información en $FCONFDNS" 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 $FCONFDNS elif [ "$OPC" = "a" -o "$OPC" = "A" ] then echo "Finalizando script..." exit else echo "Opción incorrecta." sleep 3 fi done OPC="z" echo -e "10.10.10.3\tCEPALENCIA.LOCAL" > $FAUX echo -e "10.10.10.3\tservers-03.cepalencia.es" >> $FAUX more $FCONFHOST >> $FAUX echo "Se introducirá la siguiente información en $FCONFHOST" 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 $FCONFHOST elif [ "$OPC" = "a" -o "$OPC" = "A" ] then echo "Finalizando script..." exit else echo "Opción incorrecta." sleep 3 fi done OPC="z" ## Forma cutre de modificar /etc/nsswitch.conf # more $FCONFNSS | grep -v ^hosts: > $FAUX # echo -e "hosts:\tfiles dns" >> $FAUX # cp -f $FAUX $FCONFNSS ## No nos sirve porque añade la línea de hasts al final 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 echo "Se introducirá la siguiente información en $FCONFNSS" 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 $FCONFNSS elif [ "$OPC" = "a" -o "$OPC" = "A" ] then echo "Finalizando script..." exit else echo "Opción incorrecta." sleep 3 fi done 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