Advertisement
angeldp

condicionalesBash01.sh

May 27th, 2015
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.09 KB | None | 0 0
  1. #!/bin/bash
  2. #----------------------------------------------------------------------------
  3. # Script para usar estructuras condicionales
  4. # condicionalesBash01.sh
  5. # Autor: angeldp
  6. # Se pretende aportar ejemplos prácticos, sencillos de entender,
  7. # en los que se vea la utilidad y forma de usar estructuras condicionales.
  8. # Ejemplo de uso de la estructura condicional if en la shell bash.
  9. # En este primer ejemplo se creará un script que, al ejecutarlo,
  10. # comprueba cuántos servidores DNS hay configurados en el archivo
  11. # /etc/resolv.conf; permitiendo añadir para completar hasta cuatro;
  12. # de este modo, si hay dos DNS dejará introducir otros dos como
  13. # máximo; si hay tres permitirá añadir uno más; etc.
  14. clear
  15. # Variable para guardar la ruta al fichero de configuración de DNS
  16. dnsFICH="/etc/resolv.conf"
  17. # Condición con cadenas de caracteres para comprobar si
  18. # el usuario que ejecuta el script lo hace como root
  19. if [ "$USER" != "root" ]
  20.     then
  21.     echo "Sólo root puede ejecutar este script; use sudo"
  22.     exit   
  23. fi
  24. # Condición para comprobar si existe un fichero nagada (!)
  25. # Si NO existe un fichero /etc/resolv.conf...
  26. if ! [ -f $dnsFICH ]
  27.     then
  28.     echo "El archivo $dnsFICH no se encuentra; "
  29.     echo "se omite la configuración de los DNS."
  30.     exit
  31. fi
  32.  
  33. # Si el script llega hasta aquí es que ha "salvado"
  34. # las comprobaciones anteriores, así que ejecuta su tarea:
  35.  
  36. # Con valores enteros para comprobar cuántos DNS hay:
  37. # primero cuento las líneas que comienzan por nameserver...
  38. numDNS=`more $dnsFICH | grep ^nameserver | wc -l`
  39. # Si hay cuatro o más no haremos nada (sólo indicarlo y
  40. # mostrarlos)
  41. if [ $numDNS -ge 4 ]
  42.     then
  43.     echo "Hay 4 o más DNS configurados, no es necesario más."
  44.     more $dnsFICH | grep ^nameserver
  45. # En cambio, si hay 3, pido uno más
  46. elif [ $numDNS -eq 3 ]
  47.     then
  48.     echo "Tiene 3 servidores DNS en el fichero $dnsFICH"
  49.     more $dnsFICH | grep ^nameserver
  50.     echo "Indique uno más: "
  51.     read DNS4
  52. # Pero si hay dos se pueden introducir otros dos más
  53. elif [ $numDNS -eq 2 ]
  54.     then
  55.     echo "Se han encontrado dos DNS en su sistema."
  56.     more $dnsFICH | grep ^nameserver
  57.     echo "Indique un par de ellos separados por un espacio: "
  58.     read DNS3 DNS4
  59. # Si tuviera uno, se pueden introducir hasta tres más
  60. elif [ $numDNS -eq 1 ]
  61.     then
  62.     echo "Solo se ha encontrado un DNS en su sistema."
  63.     more $dnsFICH | grep ^nameserver
  64.     echo "Indique hasta tres separados por espacios: "
  65.     read DNS2 DNS3 DNS4
  66. # En cualquier otro caso (no tiene ningún DNS) pido todos:
  67. else
  68.     echo "No se han configurado los servidores DNS."
  69.     echo "Puede introducir hasta 4 separados por espacios: "
  70.     read DNS1 DNS2 DNS3 DNS4
  71. fi
  72. # En el caso de que hayan indicado más DNS de los permitidos,
  73. # la variable DNS4 contendrá más de uno separados por espacios
  74. # en blanco, así que si hay más de un (wc -w mayor que uno)
  75. # lo indico y me quedo con el primero de ellos:
  76. # Se pueden incluir varias condiciones usando operadores lógicos
  77. # Si hay algo en $DNS4 y contiene más de un DNS...
  78. if [ -n "$DNS4" -a `echo $DNS4 | wc -w` -gt 1 ]
  79.     then
  80.     DNS4=`echo $DNS4 | cut -d' ' -f1`
  81.     echo "Ha indicado más DNS de los permitidos; "
  82.     echo "el cuarto DNS será: $DNS4 "
  83. fi
  84. # Queda introducir los DNS en el fichero,
  85. # pero solo si se han indicado, si se han dejado en blanco no.
  86. # para ello contaré los DNS introducidos y escribiré
  87. # los que corresponda:
  88. numESCRITOS=`echo "$DNS1 $DNS2 $DNS3 $DNS4" | wc -w`
  89. if [ $numESCRITOS -eq 4 ]
  90.     then
  91.     echo "nameserver $DNS1" >> $dnsFICH
  92.     echo "nameserver $DNS2" >> $dnsFICH
  93.     echo "nameserver $DNS3" >> $dnsFICH
  94.     echo "nameserver $DNS4" >> $dnsFICH
  95. elif [ $numESCRITOS -eq 3 ]
  96.     then
  97.     echo "nameserver $DNS2" >> $dnsFICH
  98.     echo "nameserver $DNS3" >> $dnsFICH
  99.     echo "nameserver $DNS4" >> $dnsFICH
  100. elif [ $numESCRITOS -eq 2 ]
  101.     then
  102.     echo "nameserver $DNS3" >> $dnsFICH
  103.     echo "nameserver $DNS4" >> $dnsFICH
  104. elif [ $numESCRITOS -eq 1 ]
  105.     then
  106.     echo "nameserver $DNS4" >> $dnsFICH
  107. else
  108.     echo "No se ha indicado ningún DNS adicional."
  109. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement