|
1 2 3 4 5 6 7 8 |
#!/bin/bash ping -c 1 dominio.com >/dev/null 2>&1 if [ "$?" != 0 ] then echo "Pagina DOWN!" else echo "Pagina UP!" fi |
|
1 2 3 4 5 6 7 8 |
#!/bin/bash ping -c 1 dominio.com >/dev/null 2>&1 if [ "$?" != 0 ] then echo "Pagina DOWN!" else echo "Pagina UP!" fi |
En este caso, se verifica que el archivo loquesea.lock exista. En caso de que exista, el script NO ejecuta sus tareas. Si no existe, crea el archivo, ejecuta las tareas que deba ejecutar y lo elimina. Pero, esto no es del todo fiable. ¿Qué pasaría si mientras nuestro script se está ejecutando es cerrado abruptamente? En ese caso el archivo de bloqueo no se borraría, y por lo tanto, no nos permitiría ejecutar el script de nuevo. Para cubrir esos casos, podríamos hacer uso del comando trap que nos permite ejecutar comandos en caso que nuestro script termine de manera inesperada. Esta versión avanzada además guarda dentro del archivo de bloqueo el PID del script que lo ejecuta.-
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/bash lockfile=loquesea.lock if ( set -o noclobber; echo "$$" > "$lockfile") 2> /dev/null; then trap 'rm -f "$lockfile"; exit $?' INT TERM EXIT echo "hago muchas cosas aqui tranquilamente" read pausa rm -f "$lockfile" trap - INT TERM EXIT else echo "Ya hay otro proceso de este script ejecutandose" echo "corriendo con el PID: $(cat $lockfile)" fi |
Entendamos un poco mejor el comando trap. La sintaxis del mismo es básicamente esta: trap comando signal [signal …; donde signal es la señal de terminación que quieres atrapar. Si quieres ver una lista de los signals disponibles puedes ejecutar el comando kill -l. Para el caso anterior se usaron los signals INT (captura la terminación producida por un Ctrl+c), TERM (terminación producida por el comando kill) y EXIT (terminación normal de un script, bien sea porque ya no hay más líneas que ejecutar o porque se encuentra con el comando exit).
Ejemplo práctico para jugar con los colores y el tipo de texto.-
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/bash PATH=/bin:/usr/bin: NONE='\033[00m' RED='\033[01;31m' GREEN='\033[01;32m' YELLOW='\033[01;33m' PURPLE='\033[01;35m' CYAN='\033[01;36m' WHITE='\033[01;37m' BOLD='\033[1m' UNDERLINE='\033[4m' echo -e "This text is ${RED}red${NONE} and ${GREEN}green${NONE} and ${BOLD}bold${NONE} and ${UNDERLINE}underlined${NONE}." tput sgr0 |
Este simple script de bash, solicita un numero al usuario, verifica que sea un valor numérico, verifica que este comprendido entre el 1 y el 12 y muestra el mes según dicho numero de un array de valores que contiene los meses.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#!/bin/bash meses=("Enero" "Febrero" "Marzo" "Abril" "Mayo" "Junio" "Julio" "Agosto" "Septiembre" "Octubre" "Noviembre" "Diciembre") echo "Ingrese el numero correspondiente al mes " read m # Revisamos que sea un numero re='^[0-9]+$' if [[ $m =~ $re ]] then # Revisamos que este comprendido entre el 1 y el 12 if [ "$m" -ge 1 -a "$m" -le 12 ] then # Restamos uno al valor ya que el array empieza por el 0 (Enero) mes=`expr $m - 1` # Mostramos el mes echo ${meses[$mes]} else echo "El mes tienes que estar comprendido entre el 1 y el 12" fi else echo "Tienes que introducir un valor numerico" fi |
|
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash archivo=/usr01/home/monitor/prueba.txt if [ -s $archivo ] && [ -w archivo ] then # Codigo si existe y no es vacio echo "archivo existe, no esta vacio y es escribible" else # codigo si no existe o es vacio echo "archivo existe, esta vacio y es escribible" fi |