Advertisement
angeldp

Untitled

May 27th, 2011
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.56 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=0
  50. while [ $CTR -eq 0 ]
  51.     do
  52.     CTR=1
  53.     [ `echo $DIRIP | tr "." " " | wc -w` -ne 4 ] && CTR=0  
  54.     for((i=1;i<5;i++))
  55.         do
  56.         OCT=`echo $DIRIP | cut -d. -f$i`
  57.         [ $OCT -lt 0 -o $OCT -gt 255 ] && CTR=0
  58.     done
  59.     if [ $CTR -eq 0 ]
  60.         then
  61.         clear
  62.         echo "La IP $DIRIP no tiene un formato válido"
  63.         echo "Indique la dirección IP de este equipo:"
  64.         read DIRIP
  65.     fi
  66. done
  67. return 0
  68. }
  69. clear
  70.  
  71. # Comprobamos si se ejecuta como root
  72.  
  73. [ "$USER" = "root" ] || error "Tienes que ser root"
  74.  
  75. # Crear variables con los valores de uso frecuente en el script
  76.  
  77. MASCARA="255.255.255.0"
  78. DNS1="10.10.10.3"
  79. DNS2="194.179.1.100"
  80. FCONFRED="/etc/network/interfaces"
  81. FCONFDNS="/etc/resolv.conf"
  82. FCONFHOST="/etc/hosts"
  83. FCONFNSS="/etc/nsswitch.conf"
  84. FAUX="/tmp/configred.aux"
  85. OPC="z"
  86.  
  87. # Comprobamos que existan los archivos
  88.  
  89. [ -f $FCONFRED ] || error "No se encontró $FCONFRED"
  90. [ -f $FCONFDNS ] || error "No se encontró $FCONFDNS"
  91. [ -f $FCONFHOST ] || error "No se encontró $FCONFHOST"
  92. [ -f $FCONFNSS ] || error "No se encontró $FCONFNSS"
  93.  
  94. # Pedimos una IP para crear el archivo interfaces
  95.  
  96. echo "Indique la dirección IP de este equipo:"
  97. read DIRIP
  98.  
  99. # Pasamos la IP a una función que se estará ejecutando
  100. # hasta que
  101. comprueba
  102. # Calculamos el gateway
  103. GATEWAY=`echo $DIRIP | cut -d. -f1-3`
  104. GATEWAY="`echo $GATEWAY`.1"
  105. # Creamos el fichero interfaces
  106. echo "auto lo" > $FAUX
  107. echo "iface lo inet loopback" >> $FAUX
  108. echo "" >> $FAUX
  109. echo "auto eth0" >> $FAUX
  110. echo "iface eth0 inet static" >> $FAUX
  111. echo "address $DIRIP" >> $FAUX
  112. echo "netmask $MASCARA" >> $FAUX
  113. echo "gateway $GATEWAY" >> $FAUX
  114.  
  115. verifica $FCONFRED
  116.  
  117. echo "nameserver $DNS1" > $FAUX
  118. echo "nameserver $DNS2" >> $FAUX
  119.  
  120. verifica $FCONFDNS
  121.  
  122. more $FCONFHOST | grep -v ^10.10.10.3 > $FAUX
  123. cp -f $FAUX $FCONFHOST
  124. echo -e "10.10.10.3\tCEPALENCIA.LOCAL" > $FAUX
  125. echo -e "10.10.10.3\tservers-03.cepalencia.es" >> $FAUX
  126. more $FCONFHOST >> $FAUX
  127.  
  128. verifica $FCONFHOST
  129.  
  130. # Cambio la línes del fichero /etc/nsswitch.conf
  131. CONT=`more $FCONFNSS | wc -l`
  132. NLINEA=1
  133. rm -f $FAUX
  134. until [ $NLINEA -eq $CONT ]
  135.     do
  136.     LINEA=`more $FCONFNSS | head -$NLINEA | tail -1`
  137.     CTR=`echo $LINEA | grep ^hosts: | wc -l`
  138.     if [ $CTR -eq 0 ]
  139.         then
  140.         echo $LINEA >> $FAUX
  141.     else
  142.         echo -e "hosts:\tfiles dns" >> $FAUX
  143.     fi
  144.     NLINEA=`expr $NLINEA + 1`
  145. done
  146.  
  147. verifica $FCONFNSS
  148.    
  149. clear
  150. echo "Se han modificado los ficheros necesarios,"
  151. echo "pulse cualquier tecla para reiniciar la red."
  152. read -n1 -s NADA
  153. /etc/init.d/networking restart
  154. exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement