Advertisement
angeldp

hostConfig

Nov 17th, 2015
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.25 KB | None | 0 0
  1. #!/bin/bash
  2. #----------------------------
  3. ## Autor: Ángel T. Domínguez
  4. ## Script: hostConfig
  5. ## Versión: 0.5
  6. #-----------------------------
  7. ## Descripción: script para configurar aspectos
  8. #  básicos de sistemas Linux.
  9. #  en su versión 0.5 se limitará a cambiar el
  10. #  nombre de máquinas Ubuntu.
  11. #----------------------------
  12.  
  13. ## Definición de constantes:
  14. NOMFILE="/etc/hostname"
  15. CENTOSFILE="/etc/sysconfig/network"
  16. AUXILIAR="/tmp/aux.tmp"
  17.  
  18.  
  19. ## Definición de funciones:
  20.  
  21. #  La función error se usará cada vez que una comprobación crítica falle
  22. #  Limpiará la pantalla, informará del error producido y sale del script.
  23. function error(){
  24.   clear
  25.   echo "Se ha producido un error."
  26.   echo "$1"
  27.   read -n1 -s -p "Pulse cualquier tecla para finalizar..." NADA
  28.   clear
  29.   exit
  30. }
  31.  
  32. # La función ayuda muestra el uso del script y sale.
  33. function ayuda() {
  34.   clear
  35.   echo -e "AYUDA\nSintaxis: hostConfig.sh [ -h | -n 'nombre']"
  36.   echo -e "-h\tMuestra esta ayuda\n-n 'nombre' cambia el nombre del equipo a 'nombre'"
  37.   echo -e "Si se ejecuta el script sin parámetros, preguntará por el nuevo nombre interactivamente"
  38.   exit
  39. }
  40.  
  41. #  La función cambiaNombre se encarga de modificar los archivos necesarios
  42. #  para cambiar el nombre al equipo. Asume que se le pasa un nombre válido
  43. #  por lo que las comprobaciones sobre el mismo deben realizarse antes de
  44. #  llamarla. Al finalizar reinicia el sistema
  45. function cambiaNombre(){
  46.   echo $1 > $NOMFILE
  47.   echo -e "127.0.1.1\t$1" > $AUXILAR
  48.   cat /etc/hosts | grep -v $HOSTNAME  >> $AUXILAR
  49.   mv $AUXILAR /etc/hosts 2> /dev/null
  50.   if [ $? -eq 0 ]
  51.     then
  52.     echo "El nombre se ha cambiado de $HOSTNAME a $NEWNAME"
  53.     echo "El equipo se reiniciará para aplicar los cambios"
  54.     read -n1 -s -p "Pulse para reiniciar..." NADA
  55.     reboot
  56.   else
  57.     echo "Se ha producido un error..."
  58.     echo "Observe los ficheros /etc/hostname y /etc/hosts por si contuvieran errores"
  59.   fi
  60. }
  61.  
  62. clear
  63. # Comprobamos que el usuario que lo ejecuta
  64. # puede modificar el nombre del equipo
  65. [ -w $NOMFILE ] || error "No tiene permisos de escritura sobre $NOMFILE"
  66.  
  67. # Comprobamos que no se trate de un equipo
  68. # con /etc/sysconfig/network
  69. [ -f $CENTOSFILE ] && error "El sistema operativo del equipo no está soportado"
  70.  
  71. # Comprobamos si se ha ejecutado sin parámetros
  72. # en cuyo caso se preguntará por el nombre.
  73. if [ $# -eq 0 ]
  74.   then
  75. #   Informo del nombre actual y pregunto si quiere cambiarlo
  76.     echo "El equipo se llama $HOSTNAME"
  77.     read -p "¿Desea cambiarlo? s/n: " -n1 OPCION
  78.   if [ "$OPCION" = "s" -o "$OPCION" = "S" ]
  79.     then
  80.     clear
  81.     NEWNAME=""
  82.     while [ "$NEWNAME" = "" ]
  83.       do
  84.       clear
  85.       echo "Señale el nuevo nombre para el equipo"
  86.       echo "(12 caracteres como máximo)"
  87.       read -n12 NEWNAME
  88.     done
  89.     cambiaNombre $NEWNAME
  90.   else
  91.     echo -e "\nSaliendo sin cambios"
  92.     exit 0
  93.   fi
  94. # En cambio, si se han usado parámetros, debo comprobar
  95. # cuál es el primero de ellos
  96. fi
  97. case "$1" in
  98.   "-h" )
  99.     ayuda;;
  100.   "-n" )
  101.     clear
  102.     if [ "$2" = "" ]
  103.       then
  104.       echo "Con la opción -n debe proporcionar un nombre de equipo"
  105.       echo "Use $0 -h para obtener ayuda."
  106.       exit 1
  107.     fi
  108.     cambiaNombre $2;;
  109.   * )
  110.     ayuda;;
  111. esac
  112. clear
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement