Advertisement
angeldp

Unión a dominio

Jun 5th, 2011
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.09 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Script que configurará los equipos Ubuntu para dejar
  4. # sus parámetros de red preparados para introducirlos
  5. # en el dominio cepalencia.local
  6.  
  7. # Declaro una función para salir cuando se produzca un error
  8.  
  9. function error(){
  10. clear
  11. echo "Se ha producido un error"
  12. echo "$1"
  13. echo "Pulse cualquier tecla para continuar."
  14. read -n1 -s NADA
  15. exit
  16. }
  17.  
  18. # La función verifica muestra, antes de sustituir, el fichero
  19. # modificado con los parámetros necesarios, dando la opción de
  20. # salir sin aplicar las modificaciones
  21.  
  22. function verifica(){
  23. clear
  24. echo "Se introducirá la siguiente información en $1"
  25. more $FAUX
  26. until [ "$OPC" = "a" -o "$OPC" = "A" -o "$OPC" = "c" -o "$OPC" = "C" ]
  27.     do
  28.     echo "¿Desea continuar (c) o abortar (a)? "
  29.     read -n1 -s OPC
  30.     if [ "$OPC" = "c" -o "$OPC" = "C" ]
  31.         then
  32.         cp -f $FAUX $1
  33.     elif [ "$OPC" = "a" -o "$OPC" = "A" ]
  34.         then
  35.         echo "Finalizando script..."
  36.         exit
  37.     else
  38.         echo "Opción incorrecta."
  39.         sleep 3
  40.     fi
  41. done
  42. OPC="z"
  43. }
  44.  
  45. # La función comprueba pedirá dirección IP hasta
  46. # que se indique una válida
  47.  
  48. function comprueba() {
  49. CTR="fail"
  50. until [ "$CTR" = "ok" ]
  51.    do
  52.    CTR2="ok"
  53.    C5=""
  54.    clear
  55.    echo Indique la dirección IP
  56.    read DIRIP
  57.    for((i=1;i<5;i++))
  58.        do
  59.        OCT=`echo $DIRIP | cut -d. -f$i`
  60.        [ $OCT -lt 0 -o $OCT -gt 255 ] && CTR2="fail"
  61.    done
  62. C1=`echo $DIRIP | cut -d. -f1`
  63. C5=`echo $DIRIP | cut -d. -f5`
  64.    if [ "$CTR2" != "fail" ] && [ $C1 -ne 0 ] && [ -z $C5 ]
  65.        then
  66.        CTR="ok"
  67.    fi
  68. done
  69. }
  70. clear
  71.  
  72. # Comprobamos si se ejecuta como root
  73.  
  74. [ "$USER" = "root" ] || error "Tienes que ser root"
  75.  
  76. # Crear variables con los valores de uso frecuente en el script
  77. # Datos del dominio
  78. DOMINIO="cepalencia.local"
  79. ADMDOM="Administrador"
  80. DCIP="10.10.10.3"
  81. DCNAME="servers-03.cepalencia.es"
  82. #Datos del equipo
  83. MASCARA="255.255.255.0"
  84. DNS1="10.10.10.3"
  85. DNS2="194.179.1.100"
  86. FCONFNAME="/etc/hostname"
  87. FCONFRED="/etc/network/interfaces"
  88. FCONFDNS="/etc/resolv.conf"
  89. FCONFHOST="/etc/hosts"
  90. FCONFNSS="/etc/nsswitch.conf"
  91. FAUX="/tmp/configred.aux"
  92. OPC="z"
  93.  
  94. # Comprobamos que existan los archivos
  95.  
  96. [ -f $FCONFNAME ] || error "No se encontró $FCONFNAME"
  97. [ -f $FCONFRED ] || error "No se encontró $FCONFRED"
  98. [ -f $FCONFDNS ] || error "No se encontró $FCONFDNS"
  99. [ -f $FCONFHOST ] || error "No se encontró $FCONFHOST"
  100. [ -f $FCONFNSS ] || error "No se encontró $FCONFNSS"
  101.  
  102. # Pedimos el nombre del equipo, permitiendo mantener el actual
  103. echo "Indique el nombre del equipo, o pulse enter para"
  104. echo -e "mantener el actual: $HOSTNAME \n"
  105. read MYNAME
  106. [ -z $MYNAME ] && MYNAME=$HOSTNAME
  107. echo $HOSTNAME > $FCOFNAME
  108. clear
  109. # Pedimos una IP para crear el archivo interfaces
  110. # asegurándonos de que se indica una válida
  111. comprueba
  112. # Calculamos el gateway
  113. GATEWAY=`echo $DIRIP | cut -d. -f1-3`
  114. GATEWAY="`echo $GATEWAY`.1"
  115. # Creamos el fichero interfaces
  116. echo "auto lo" > $FAUX
  117. echo "iface lo inet loopback" >> $FAUX
  118. echo "" >> $FAUX
  119. echo "auto eth0" >> $FAUX
  120. echo "iface eth0 inet static" >> $FAUX
  121. echo "address $DIRIP" >> $FAUX
  122. echo "netmask $MASCARA" >> $FAUX
  123. echo "gateway $GATEWAY" >> $FAUX
  124. # Lo mostramos y permitimos abortar
  125. verifica $FCONFRED
  126. # Creamos el fichero resolv.conf
  127. echo "nameserver $DNS1" > $FAUX
  128. echo "nameserver $DNS2" >> $FAUX
  129. # Lo mostramos y permitimos abortar
  130. verifica $FCONFDNS
  131. # Eliminamos del fichero /etc/hosts las línes que
  132. # pudieran existir con datos del equipo o dominio
  133. more $FCONFHOST | grep -v ^$DCIP | grep -v ^$DIRIP > $FAUX
  134. cp -f $FAUX $FCONFHOST
  135. # Incluimos las nuevas líneas en un fichero vacío
  136. echo -e "$DIRIP\t${MYNAME}.${DOMINIO}\t$MYNAME" > $FAUX
  137. echo -e "$DCIP\t$DOMINIO" >> $FAUX
  138. echo -e "$DCIP\t$DCNAME" >> $FAUX
  139. # Y le añadimos el resto de /etc/hosts
  140. more $FCONFHOST >> $FAUX
  141. # Lo mostramos permitiendo abortar
  142. verifica $FCONFHOST
  143. # Cambio la línea del fichero /etc/nsswitch.conf
  144. CONT=`more $FCONFNSS | wc -l`
  145. NLINEA=1
  146. rm -f $FAUX
  147. until [ $NLINEA -eq $CONT ]
  148.     do
  149.     LINEA=`more $FCONFNSS | head -$NLINEA | tail -1`
  150.     CTR=`echo $LINEA | grep ^hosts: | wc -l`
  151.     if [ $CTR -eq 0 ]
  152.         then
  153.         echo $LINEA >> $FAUX
  154.     else
  155.         echo -e "hosts:\tfiles dns" >> $FAUX
  156.     fi
  157.     NLINEA=`expr $NLINEA + 1`
  158. done
  159. # Lo muestro por pantalla para asegurarme de que está todo en orden
  160. verifica $FCONFNSS
  161. clear
  162. # Una vez configurados los parámetros de red
  163. # deberemos reiniciar la red, verificando posibles errores
  164. echo "Se han modificado los ficheros necesarios,"
  165. echo "pulse cualquier tecla para reiniciar la red."
  166. read -n1 -s NADA
  167. /etc/init.d/networking restart
  168. [ $? -ne 0 ] && error "La red no se ha podido reiniciar. Error nº $?"
  169. # Reinstalamos, desde 0, la herramienta likewise-open.
  170. clear
  171. echo "Eliminando instalaciones previas... "
  172. sleep 1
  173. apt-get purge likewise-open 2> /dev/null
  174. apt-get purge krb5-user 2> /dev/null
  175. apt-get purge krb5-config 2> /dev/null
  176. sleep 1
  177. clear
  178. echo "Instalando likewise-open... "
  179. sleep 1
  180. apt-get install likewise-open
  181. sleep 1
  182. clear
  183. sleep 1
  184. echo "Llevamos a cabo la unión al dominio."
  185. echo "Indique la contraseña del administrador del dominio cuando se la solicite"
  186. domainjoin-cli join $DOMINIO $ADMDOM
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement