Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/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="fail"
- until [ "$CTR" = "ok" ]
- do
- CTR2="ok"
- C5=""
- clear
- echo Indique la dirección IP
- read DIRIP
- for((i=1;i<5;i++))
- do
- OCT=`echo $DIRIP | cut -d. -f$i`
- [ $OCT -lt 0 -o $OCT -gt 255 ] && CTR2="fail"
- done
- C1=`echo $DIRIP | cut -d. -f1`
- C5=`echo $DIRIP | cut -d. -f5`
- if [ "$CTR2" != "fail" ] && [ $C1 -ne 0 ] && [ -z $C5 ]
- then
- CTR="ok"
- fi
- done
- }
- 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
- # Datos del dominio
- DOMINIO="cepalencia.local"
- ADMDOM="Administrador"
- DCIP="10.10.10.3"
- DCNAME="servers-03.cepalencia.es"
- #Datos del equipo
- MASCARA="255.255.255.0"
- DNS1="10.10.10.3"
- DNS2="194.179.1.100"
- FCONFNAME="/etc/hostname"
- 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 $FCONFNAME ] || error "No se encontró $FCONFNAME"
- [ -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 el nombre del equipo, permitiendo mantener el actual
- echo "Indique el nombre del equipo, o pulse enter para"
- echo -e "mantener el actual: $HOSTNAME \n"
- read MYNAME
- [ -z $MYNAME ] && MYNAME=$HOSTNAME
- echo $HOSTNAME > $FCOFNAME
- clear
- # Pedimos una IP para crear el archivo interfaces
- # asegurándonos de que se indica una válida
- 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
- # Lo mostramos y permitimos abortar
- verifica $FCONFRED
- # Creamos el fichero resolv.conf
- echo "nameserver $DNS1" > $FAUX
- echo "nameserver $DNS2" >> $FAUX
- # Lo mostramos y permitimos abortar
- verifica $FCONFDNS
- # Eliminamos del fichero /etc/hosts las línes que
- # pudieran existir con datos del equipo o dominio
- more $FCONFHOST | grep -v ^$DCIP | grep -v ^$DIRIP > $FAUX
- cp -f $FAUX $FCONFHOST
- # Incluimos las nuevas líneas en un fichero vacío
- echo -e "$DIRIP\t${MYNAME}.${DOMINIO}\t$MYNAME" > $FAUX
- echo -e "$DCIP\t$DOMINIO" >> $FAUX
- echo -e "$DCIP\t$DCNAME" >> $FAUX
- # Y le añadimos el resto de /etc/hosts
- more $FCONFHOST >> $FAUX
- # Lo mostramos permitiendo abortar
- verifica $FCONFHOST
- # Cambio la línea 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
- # Lo muestro por pantalla para asegurarme de que está todo en orden
- verifica $FCONFNSS
- clear
- # Una vez configurados los parámetros de red
- # deberemos reiniciar la red, verificando posibles errores
- echo "Se han modificado los ficheros necesarios,"
- echo "pulse cualquier tecla para reiniciar la red."
- read -n1 -s NADA
- /etc/init.d/networking restart
- [ $? -ne 0 ] && error "La red no se ha podido reiniciar. Error nº $?"
- # Reinstalamos, desde 0, la herramienta likewise-open.
- clear
- echo "Eliminando instalaciones previas... "
- sleep 1
- apt-get purge likewise-open 2> /dev/null
- apt-get purge krb5-user 2> /dev/null
- apt-get purge krb5-config 2> /dev/null
- sleep 1
- clear
- echo "Instalando likewise-open... "
- sleep 1
- apt-get install likewise-open
- sleep 1
- clear
- sleep 1
- echo "Llevamos a cabo la unión al dominio."
- echo "Indique la contraseña del administrador del dominio cuando se la solicite"
- domainjoin-cli join $DOMINIO $ADMDOM
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement