Snippets programación bash
Salida a stdout o logger
A stdout o logger
Mirar sección parámetros
Miscelanea
# exit when any command fails
set -e
set -e
Manejar parámetros
if [ $# -eq 0 ]
then
echo "No arguments supplied"
fi
then
echo "No arguments supplied"
fi
# el : que sigue a un argumento representa el parámetro del argumento
# si no hay un ":" es un argumento sin parámetro
# sólo se permiten argumentos de una sola letra
while getopts ":d:c" opt; do
case "$opt" in
c) # Comprovamos si ha activado la opcion de ejecutar a través de cron
# Establecemos como salida de todos los pipes al logger
exec &> >(logger --tag "$(basename $0)")
;;
d) #Opción para determinal dominio a actualizar
DOMINIO=${OPTARG}
;;
esac
done
[ -z "$DOMINIO" ] && echo "Falta parámetro: nombre de dominio (-d)" && exit 2
# si no hay un ":" es un argumento sin parámetro
# sólo se permiten argumentos de una sola letra
while getopts ":d:c" opt; do
case "$opt" in
c) # Comprovamos si ha activado la opcion de ejecutar a través de cron
# Establecemos como salida de todos los pipes al logger
exec &> >(logger --tag "$(basename $0)")
;;
d) #Opción para determinal dominio a actualizar
DOMINIO=${OPTARG}
;;
esac
done
[ -z "$DOMINIO" ] && echo "Falta parámetro: nombre de dominio (-d)" && exit 2
Enviar un correo con el resultado de un comando
- Es necesario instalar
ssmtpybsd-mailx
# Para ejecución directa:
/usr/games/fortune -a | /usr/bin/mail hugo@hugo.cat -s "Fortune del $(date +\%d/\%m/\%Y)"
# Para lanzar a batch:
echo "/usr/bin/speedtest-cli --simple | /usr/bin/mail root -s \"Speedtest de $(date +\%d/\%m/\%Y)\"" | batch
/usr/games/fortune -a | /usr/bin/mail hugo@hugo.cat -s "Fortune del $(date +\%d/\%m/\%Y)"
# Para lanzar a batch:
echo "/usr/bin/speedtest-cli --simple | /usr/bin/mail root -s \"Speedtest de $(date +\%d/\%m/\%Y)\"" | batch
Varios
Comprovación de existencia de diversos elementos
# ¿Existe fichero?
[ ! -f "$FICHERO_PERMISOS" ] && echo "Fichero de permisos no encontrado" && exit 2
# ¿Existe directorio?
[ ! -d "$DIRECTORIO_BASE" ] && echo "Directorio objetivo no encontrado" && exit 2
# ¿Existe comando?
[ ! $(command -v wget) ] && echo "wget no encontrado" && exit 2
[ ! -f "$FICHERO_PERMISOS" ] && echo "Fichero de permisos no encontrado" && exit 2
# ¿Existe directorio?
[ ! -d "$DIRECTORIO_BASE" ] && echo "Directorio objetivo no encontrado" && exit 2
# ¿Existe comando?
[ ! $(command -v wget) ] && echo "wget no encontrado" && exit 2
listado en https://stackoverflow.com/a/21164441