Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #----------------------------
- ## Autor: Ángel T. Domínguez
- ## Script: hostConfig
- ## Versión: 0.5
- #-----------------------------
- ## Descripción: script para configurar aspectos
- # básicos de sistemas Linux.
- # en su versión 0.5 se limitará a cambiar el
- # nombre de máquinas Ubuntu.
- #----------------------------
- ## Definición de constantes:
- NOMFILE="/etc/hostname"
- CENTOSFILE="/etc/sysconfig/network"
- AUXILIAR="/tmp/aux.tmp"
- ## Definición de funciones:
- # La función error se usará cada vez que una comprobación crítica falle
- # Limpiará la pantalla, informará del error producido y sale del script.
- function error(){
- clear
- echo "Se ha producido un error."
- echo "$1"
- read -n1 -s -p "Pulse cualquier tecla para finalizar..." NADA
- clear
- exit
- }
- # La función ayuda muestra el uso del script y sale.
- function ayuda() {
- clear
- echo -e "AYUDA\nSintaxis: hostConfig.sh [ -h | -n 'nombre']"
- echo -e "-h\tMuestra esta ayuda\n-n 'nombre' cambia el nombre del equipo a 'nombre'"
- echo -e "Si se ejecuta el script sin parámetros, preguntará por el nuevo nombre interactivamente"
- exit
- }
- # La función cambiaNombre se encarga de modificar los archivos necesarios
- # para cambiar el nombre al equipo. Asume que se le pasa un nombre válido
- # por lo que las comprobaciones sobre el mismo deben realizarse antes de
- # llamarla. Al finalizar reinicia el sistema
- function cambiaNombre(){
- echo $1 > $NOMFILE
- echo -e "127.0.1.1\t$1" > $AUXILAR
- cat /etc/hosts | grep -v $HOSTNAME >> $AUXILAR
- mv $AUXILAR /etc/hosts 2> /dev/null
- if [ $? -eq 0 ]
- then
- echo "El nombre se ha cambiado de $HOSTNAME a $NEWNAME"
- echo "El equipo se reiniciará para aplicar los cambios"
- read -n1 -s -p "Pulse para reiniciar..." NADA
- reboot
- else
- echo "Se ha producido un error..."
- echo "Observe los ficheros /etc/hostname y /etc/hosts por si contuvieran errores"
- fi
- }
- clear
- # Comprobamos que el usuario que lo ejecuta
- # puede modificar el nombre del equipo
- [ -w $NOMFILE ] || error "No tiene permisos de escritura sobre $NOMFILE"
- # Comprobamos que no se trate de un equipo
- # con /etc/sysconfig/network
- [ -f $CENTOSFILE ] && error "El sistema operativo del equipo no está soportado"
- # Comprobamos si se ha ejecutado sin parámetros
- # en cuyo caso se preguntará por el nombre.
- if [ $# -eq 0 ]
- then
- # Informo del nombre actual y pregunto si quiere cambiarlo
- echo "El equipo se llama $HOSTNAME"
- read -p "¿Desea cambiarlo? s/n: " -n1 OPCION
- if [ "$OPCION" = "s" -o "$OPCION" = "S" ]
- then
- clear
- NEWNAME=""
- while [ "$NEWNAME" = "" ]
- do
- clear
- echo "Señale el nuevo nombre para el equipo"
- echo "(12 caracteres como máximo)"
- read -n12 NEWNAME
- done
- cambiaNombre $NEWNAME
- else
- echo -e "\nSaliendo sin cambios"
- exit 0
- fi
- # En cambio, si se han usado parámetros, debo comprobar
- # cuál es el primero de ellos
- fi
- case "$1" in
- "-h" )
- ayuda;;
- "-n" )
- clear
- if [ "$2" = "" ]
- then
- echo "Con la opción -n debe proporcionar un nombre de equipo"
- echo "Use $0 -h para obtener ayuda."
- exit 1
- fi
- cambiaNombre $2;;
- * )
- ayuda;;
- esac
- clear
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement