ShellShock.- Vulnerabilidad importante

La shell de bash y sh son vulnerables. Ya estan saliendo los parches, hay que actualizar el sistema.

Para saber tienen el problema ejecuten en una shell sin permisos de root:

Para bash:

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

Es vulnerable (si ejecuta el primer comando echo, el que está dentro de la variable x) si les devuelve algo así como:

vulnerable
this is a test

Para sh:

rm -f echo
env X='() { (a)=>\' sh -c "echo date"; cat echo

Es vulnerable si (ejecuta el comando date):

sh: X: line 1: syntax error near unexpected token `=’
sh: X: line 1: `’
sh: error importing function definition for `X’
Thu 25 Sep 2014 08:50:18 BST

 

 

 

Para más información:
https://lists.debian.org/debian-security-announce/2014/msg00220.html
http://barrapunto.com/articles/14/09/24/2114240.shtml
http://apple.stackexchange.com/questions/146849/how-do-i-recompile-bash-to-avoid-shellshock-the-remote-exploit-cve-2014-6271-an
https://es-us.noticias.yahoo.com/descubren-vulnerabilidad-seguridad-que-podr%C3%ADa-ser-m%C3%A1s-grande-235300902.html

Anuncios

Manuales de Linux, redes, programación para descargarse por P2P

Gracias a cuelgame.net encontré unos manuales de GNU/Linux con muy buena pinta, para descargar por P2P. Les dejo el enlace magnético:

magnet:?xt=urn:btih:7628b235a486abc87b287b3ed19f48eb54affeba&dn=Manuales%3ALinux,redes,programacion&tr=http%3A%2F%2Ftracker.thepiratebay.org%2Fannounce&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.ccc.de%3A80&tr=udp%3A%2F%2Ft

Nota: Si da error el enlace magnético como lo puse, lo encuentran en la entrada de cuelgame.net que enlace más arriba.

 

Contenido:

  • Administración avanzada de GNU-Linux.pdf
  • Administración de una red local basada en Internet.pdf
  • Aitken Peter - Aprendiendo C En 21 Dias.PDF
  • Análisis de seguridad de los protocolos TCP-IP.pdf
  • Anaya.La Biblia de C.pdf
  • Apuntes C.pdf
  • Aspectos avanzados de seguridad en Redes.pdf
  • Curso C.pdf
  • Curso completo de HTML.pdf
  • El shell Bash.pdf
  • GNULinux-Programacion de sistemas.pdf
  • Guia de administración de redes con Linux.pdf
  • Guía de Linux para el usuario.pdf
  • Guía de redes.pdf
  • Guia de seguridad del administrador de Linux.pdf
  • Guía Linux de programación(GULP).pdf
  • Introduction to the Command Line.pdf
  • La Guía del enROOTador para Linux.pdf
  • Lenguaje ensamblador para PC.pdf
  • Linux 2.4 Filtrado de paquetes.COMO.pdf
  • Linux from scratch.pdf
  • Manuales de programacion en Linux.pdf
  • Más allá de Linux from scratch.pdf
  • Prentice Hall - Linux Maxima Seguridad - Edicion Especial.PDF
  • Programación avanzada en shell.pdf
  • Programación de socket Linux (Sean Walton).pdf
  • Programación en C.pdf
  • Python.pdf
  • Redes de área local.Aplicaciones y servicios Linux.pdf
  • Redes de computadoras.pdf
  • Redes de computadoras (A. Tanenbaum.4ª Edición).pdf
  • Redes Linux con TCP-IP.pdf
  • Redes tcp-ip.pdf
  • Seguridad en Unix y redes.pdf
  • Tanenbaum Andrew - Sistemas Operativos Modernos.PDF
  • Tutorial de IPtables (O. Andreasson).pdf
  • Tutorial de Python..pdf
  • XHTML+CSS.pdf

 

 

 

Lubuntu.- Script para cambiar el wallpaper dinamicamente

Script para cambiar el wallpaper de forma dinámica en Lubuntu con escritorio LXDE. Basado en el script de: http://lordcaos.com.ve/2011/07/script-para-cambiar-fondo-de-pantalla-gnome-3/

 

Script:

#!/bin/bash
## Script para cambiar de wallpaper en forma dinámica para Lubuntu, usando el escritorio LXDE; basado en el script de: http://lordcaos.com.ve/2011/07/script-para-cambiar-fondo-de-pantalla-gnome-3/
## Hay un nuevo de fondo de escritorio cada minuto, el tiempo se modifica cambiando el valor de sleep.
cd /home/tucarpetadewallpapers
while [ 1 ]
do
set — *
length=$#
random_num=$(( $RANDOM % ($length + 1) ))
pcmanfm -w "/home/tucarpetadewallpapers/${!random_num}"
sleep 1m
done

 

Enlace corto a esta entrada: http://wp.me/pjHsf-VX

 

 

 

Comandos.- Variables de entorno

Las variables de entorno se cargan junto con el sistema, su valor es dinámico, está guardado en la RAM y pueden ser utilizadas por varios procesos a la vez.

Hay variables como $PATH que sirven para indicar las rutas para los scripts, comandos, etc., las veo haciendo en la terminal: echo $PATH. Encontré más escribiendo la primera letra en la terminal y luego haciendo doble TAB, es a lo que le dicen autocompletado. También se pueden obtener ejecutando en la terminal: env.

Todas son importantes, pero las que creo que más me van a servir en los scripts son: $BASH (ruta de bash); $HOME (ruta del home del usuario); $KERNEL; $MACHTYPE (tipo de maquina); $PATH (ruta para los scripts); $PWD (ruta donde se esta); $SHELL; $UID y $USER (usuario).

Ejemplos:

leafpad $HOME/Documents/texto.txt
echo $PATH
pcmanfm --set-wallpaper=/home/$USER/Pictures/imagen.jpg

En sistemas basados en UNIX, las variables de entorno inician con un signo de pesos ( $ ), y aunque no es obligatorio se pueden escribir entre llaves, por ejemplo: ${PATH}

Las variables de entorno que encontré en mi Linux aprovechándome del autocompletado; puede que la lista de otras personas sean diferente.

A

$ACTION

B

$BASH
$BASH_COMPLETION_DIR
$BASH_ALIASES
$BASH_LINENO
$BASH_ARGC
$BASHOPTS
$BASH_ARGV
$BASHPID
$BASH_CMDS
$BASH_SOURCE
$BASH_COMMAND
$BASH_SUBSHELL
$BASH_COMPLETION
$BASH_VERSINFO
$BASH_COMPLETION_COMPAT_DIR
$BASH_VERSION

C

$COLUMNS
$COMP_WORDBREAKS

D

$DBUS_SESSION_BUS_ADDRESS
$DEVPATH
$DEFAULTS_PATH
$DEVTYPE
$DESKTOP_SESSION
$DIRSTACK
$DEVNAME
$DISPLAY

E

$EUID

G

$GNOME_KEYRING_CONTROL
$GROUPS
$GNOME_KEYRING_PID
$GTK_MODULES

H

$HISTCMD
$HISTFILE
$HISTSIZE
$HOSTNAME
$HISTCONTROL
$HISTFILESIZE
$HOME
$HOSTTYPE

I

$IFS
$INSTANCE

 

$JOB

K

$KERNEL

L

$LANG
$LC_CTYPE
$LESSOPEN
$LOGNAME
$LANGUAGE
$LC_MESSAGES
$LINENO
$LS_COLORS
$LC_COLLATE
$LESSCLOSE
$LINES

M

$MACHTYPE
$MAJOR
$MINOR
$MAILCHECK
$MANDATORY_PATH

O

$OPTERR
$OPTIND
$OSTYPE

P

$PATH
$PS1
$PIPESTATUS
$PS2
$PPID
$PS4
$PREVLEVEL
$PWD
$PRIMARY_DEVICE_FOR_DISPLAY

R

$RANDOM
$RUNLEVEL

S

$SAL_USE_VCLPLUGIN
$SHELL
$SSH_AGENT_PID
$SECONDS
$SHELLOPTS
$SSH_AUTH_SOCK
$SEQNUM
$SHLVL
$SUBSYSTEM

T

$TAGS
$TERM

U

$UDEV_LOG
$UPSTART_EVENTS
$UPSTART_JOB
$UID
$UPSTART_INSTANCE
$USER

X

$XAUTHORITY
$XDG_CURRENT_DESKTOP
$XDG_SESSION_COOKIE
$XDG_CONFIG_DIRS
$XDG_DATA_DIRS
$XORGCONFIG
$XDG_CONFIG_HOME
$XDG_MENU_PREFIX

_

$_
$_LXSESSION_PID
$__grub_script_check_program
$_scp_path_esc

 

 

 

Enlace corto a esta entrada: http://wp.me/pjHsf-UN

 

 

 

Lubuntu.- Ocultar y mostrar los iconos del escritorio

 

Ocultar iconos del escritorio en Lubuntu con Desktop LXDE

pcmanfm --desktop-off

Mostrar los iconos del escritorio en Lubuntu con Desktop LXDE

pcmanfm --desktop

 

Ocultar los iconos al inicio de la sesión.

Para que los iconos permanezcan ocultos al reiniciar se puede agregar un script al inicio de aplicaciones (~/.config/autostart) con la ayuda de la herramienta lxshortcut.

Script:

#!/bin/bash

pcmanfm --desktop-off
exit

 

Algunas cosas a tomar en cuenta.

Cuando se cambia el wallpaper y los iconos del escritorio están ocultos el cambio no se observa. Es visible hasta que se activan los iconos del desktop y permanece cuando se ocultan de nuevo.

Tengo los iconos ocultos desde el inicio de sesión usando el autostart pero el wallpaper que toma en cuenta es el primero que puse, los siguientes ya no. Para ver el nuevo tengo que mostrar los iconos y luego ocultarlos.

 

Ayuda

pcmanfm --help
man pcmanfm
info pcmanfm

 

Enlace corto a esta entrada: http://wp.me/pjHsf-Uq

 

 

 

Script para cambiar dinamicamente el fondo de escritorio en Gnome3

Vía: http://lordcaos.com.ve/2011/07/script-para-cambiar-fondo-de-pantalla-gnome-3/

Script para cambiar los fondos de escritorio de manera dinámica.

Se cambia /home/tuusuario/tucarpetadewallpapers por la ruta de la carpeta donde estén las imágenes que vamos a usar y que conste que aparece dos veces en el script.

En la página del autor del script tiene una mejor explicación de como hacer los cambios, la manera en que se ejecute desde el inicio de la sesión y otras cosas.

 

#!/bin/bash
## Script de: http://lordcaos.com.ve/2011/07/script-para-cambiar-fondo-de-pantalla-gnome-3/
cd /home/tuusuario/tucarpetadewallpapers
while [ 1 ]
do
set — *
length=$#
random_num=$(( $RANDOM % ($length + 1) ))
gsettings set org.gnome.desktop.background picture-uri "file:////home/tuusuario/tucarpetadewallpapers/${!random_num}"
sleep 100
done

 

 

 

Comandos.- Crear comandos propios

Crear comandos propios

Podemos crear scripts y llamarlos como si fueran un comando si los ponemos en una de las rutas que integran el PATH y les damos permisos de ejecución.

Las rutas que forman parte del PATH se pueden averiguar ejecutando en la terminal:

echo $PATH

Me devuelve:

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Mi carpeta /usr/local/sbin esta vacía, por eso la prefiero sobre las demás.

Ejemplo:

printf 'echo "Hola, este script funciona como si fuera un comando."\nexit' | sudo tee /usr/local/sbin/hola; sudo chmod a+x '/usr/local/sbin/hola'; hola

La linea de comandos anterior crea un script dentro de /usr/local/sbin llamado hola, para poderlo guardar dentro nos pide contraseña de root. Luego se le da permisos de ejecución a todos los usuarios con el comando chmod y también necesita de permisos de root para dárselos. El comando se llama, escribiendo hola en la terminal, nos devuelve: Hola, este script funciona como si fuera un comando.

Así de sencillo es crear los comandos y se usan igual. Cuando necesiten permisos de root se antepone la palabra sudo o se ejecutan desde una terminal del root.

EXTRA

Dar permisos de root para un comando a un usuario, grupo o a todos se hacen los siguientes pasos:

a) Respaldar el archivo sudoers

sudo cp /etc/sudoers /etc/sudoers.backup

b) Abrir el archivo de sudoers.

export EDITOR=nano && sudo -E visudo

En el blog lgallardo.com dice que en una terminal del root se escribe visudo y enter para abrir sudoers. Pero yo siempre lo abro con la linea de arriba y puedo constar que de las dos formas funcionaron bien.

c) Dar permisos de root a un usuario o a todos para que no pida la contraseña para un comando o script. Estas lineas se agregan al final del archivo de sudoers.

Para un usuario:

[Usuario] ALL=NOPASSWD: [Ruta completa del script, comando, programa, etc.]

Para todos los usuarios:

ALL ALL=NOPASSWD: [Ruta completa del script, comando, programa, etc.]

Para un grupo de usuarios:

%[Grupo de usuarios] ALL=NOPASSWD: [Ruta completa del script, comando, programa, etc.]

Ejemplos:

travesuras ALL=NOPASSWD: /bin/mount
ALL ALL=NOPASSWD: /usr/sbin/ufw status
%pandilla ALL=NOPASSWD: /usr/sbin/ufw enable

El primer ejemplo da control absoluto del comando mount al usuario travesuras, el segundo solo le permite consultar el estado de ufw a todos los usuarios y el tercero permite al grupo pandilla activar ufw.

Estos comandos, programas y scripts a los que dimos permisos de root los pueden ejecutar todos los usuarios logueados tanto localmente como en forma remota.

 

 

 

Enlace corto a esta entrada: http://wp.me/pjHsf-QC

 

 

 

Comandos.- Apagar la pantalla (monitor)

La pantalla de la laptop o el monitor se puede apagar con el comando xset. Con mover un poco la touchpad se activa otra vez la pantalla y no son necesarios permisos especiales para usar este comando.

Ya tenía tiempo buscando la forma de apagar la pantalla, al fin la encontré en:
http://linuxcomandos.blogspot.com/2008/02/comando-para-apagar-el-monitor.html
Bastante sencillo y sin instalar nada.

Esto sirve para ahorrar energía tanto si es laptop o PC, que no se desgaste a lo tonto el monitor, etc.

La pantalla es una de las partes que más consumen energía en una laptop. Un uso práctico de este comando es que si yo estuviera descargando algo, usando la batería y no necesitara en ese momento para algo más la notebook, puedo apagar el monitor. Con solo hacer eso me da más tiempo de batería.

Otro uso práctico es cuando utilizas la computadora hasta que te vence el sueño viendo una película, escuchando música, leyendo un libro, etc. La luz molesta mucho y no deja dormir bien. Puedes programarla para que se apague después de un tiempo, al terminar la película, mientras escuchas música, etc

Para apagar la pantalla escribir en la terminal:

xset dpms force off

Cuando doy la orden sencilla y tengo apoyada la mano sobre la laptop, al levantarla se vuelve a encender la pantalla. Con un segundo de espera que le de, deja de ser problema:

sleep 1s && xset dpms force off

Modificando un poco el comando anterior puedo establecer el tiempo que sea de espera antes de apagarse la pantalla. Por ejemplo, treinta minutos.

sleep 30m && xset dpms force off

Se puede apagar al terminar una película; llamando primero el vídeo con MPlayer y después apagando el monitor con xset. Cuando la lista es más compleja e incluye audio(s) y vídeo(s) se da la orden de apagar la pantalla después de un vídeo, porque se activa el monitor en cuanto empiezan; pero no pasa igual con los audios. Cuando es solo música se manda apagar la pantalla desde el principio para ahorrar energía, que no moleste la luz, etc.

Ejemplos:

mplayer video ; sleep 1s && xset dpms force off

mplayer video1 ; sleep 1s && xset dpms force off ; mplayer audio1 audio2 audio3 ; mplayer video2 -sub subtitulo2 -noautosub -utf8 ; sleep 1s && xset dpms force off ; mplayer audio4 audio5

Uso MPlayer para esto porque ese programa al terminar el audio/vídeo se cierra solo. No podría ejecutar el siguiente comando hasta llegar a xset, al menos de manera tan sencilla.

Cuando son distintas ordenes de comandos en una sola linea se separa cada una con un punto y coma (;).

 

 

Update; Otra manera de apagar la pantalla es con: xrandr --output LVDS --off, cambien LVDS por el que les toque. Con xrandr no pude volver a prender la pantalla moviendo un poco el teclado y/o mouse, tuve que reiniciar las X para que volviera a encender.

Para ahorrar batería me ha servido más hacer un script que tenga dentro sleep 1s && xset dpms force off ; exit y ponerlo como atajo de teclado que el script de abajo.

 

 

Script para programar que se apague la pantalla después de un tiempo:

#!/usr/bin/env bash

# Hace que la pantalla se apague en el tiempo que queramos. Hace uso de xset, sleep y zenity.

# Este script se puede guardar dentro de la carpeta de los scripts del nautilus (~/.gnome2/nautilus-scripts), crear un atajo de teclado en System Settings ==> Keyboard ==> Shortcuts ==> Custom Shortcuts, ejecutando en la terminal: sh este-script.sh o haciendo doble click sobre el y ejecutando (Run).

# Para que funcione necesita de zenity y también que se le de permisos de ejecución. En la terminal se le dan con: chmod a+x este-script.sh

# Script de: http://travesuras.wordpress.com

tiempo=$(zenity --entry --title="Programar que la pantalla se apague" --text="30m son treinta minutos.

Para segundos se cambia la \'m\' por una \'s\',
para minutos es una \'m\' como en el texto
de ejemplo, para horas por una \'h\'
y para días por una \'d\'." --entry-text "30m")

sleep $tiempo && xset dpms force off

exit

 

 

 

Enlace rápido a este post: http://wp.me/pjHsf-Oa

 

 

 

Script para enviar notificaciones mediante notify-send

Hace tiempo leí en en el blog de Fausto como utilizar el comando notify-send e instalar las librerías. Esta entrada no pretende enseñar a utilizar o instalar lo necesario para notify-send, solo mostrar el script que logre a partir del que tiene Fausto.

Generalmente uso este script como cronometro mientras estoy cocinando.

Lo toquetee un poco para que alcanzara para diez notificaciones este script, avisara cuando ya no hay disponibles, preguntara el tiempo en minutos y como soy muy olvidadiza me dejara una nota con el tiempo para que se ejecute el comando, el mensaje, etc en el archivo /tmp/notificacion-sonido/notificacion-X-remind.txt. Crea la carpeta /tmp/notificacion-sonido, dentro de ella sitúa el archivo antes mencionado y el sonido para notify-send (/tmp/notificacion-sonido/notificacion-X-remind.wav). Al terminar de ejecutarse la notificación, la carpeta junto con su contenido son borrados automáticamente si no hay más pendientes.

Los script los meto dentro de la carpeta ~/.gnome2/nautilus-scripts y la imagen que adorna la notificación también la sitúe en la misma. Su nombre es remind.png, puede cambiarse el tipo de imagen y la ubicación según las necesidades personales.

 

Nota.- Cuando envio una notificación en Ubuntu y el programa no esta instalado me indica como agregarlo. Ejemplo de como enviar una notificación: notify-send "Hola"

 

Pasos para su utilización

  1. Crear el archivo en la carpeta indicada ~/.gnome2/nautilus-scripts, o en cualquiera que se desee
  2. Ubicar la imagen de elección con el nombre remind.png en la carpeta de los script para nautilus o modificar la ruta en el script
  3. Dar permisos de ejecución al archivo

    chmod a+x "ruta del script"

    Ejemplo:

    chmod a+x "/home/`whoami`/.gnome2/nautilus-scripts/notificacion-sonido.sh"

  4. Este script lo llamo con un atajo de teclado que agregue con Gconf (gconf-editor). Se agrega modificando dos variables a) /apps/metacity/global_keybindings/run_command_X y b) /apps/metacity/keybinding_commands/command_X. Donde la X al final se cambia por un número que va del 1-12 y debe de ser el mismo para las dos variables. En el primero se le indican cuales teclas van a ser utilizadas para este atajo y en el segundo la acción a realizar.
    Desde la terminal y en un solo paso:

    gconftool-2 --type string -s /apps/metacity/global_keybindings/run_command_9 '<Mod4><Alt>s'; gconftool-2 --type string -s /apps/metacity/keybinding_commands/command_9 "sh /home/`whoami`/.gnome2/nautilus-scripts/notificacion-sonido.sh"

    En esta linea de comandos es el atajo 9 y las teclas rápidas son la super L + Alt + s. Se cambian según las necesidades. La ruta del script debe de estar completa para que funcione correctamente el atajo de teclado.

Nota.- whoami es un comando que indica cual es el nombre de usuario para nuestro /home y el acento grave (`) hacen que se ejecute antes que chmod.

Script

#!/usr/bin/env bash

# Permite al usuario enviar hasta diez mensajes y/o recordatorios por medio de notify-send, decidiendo en cuanto tiempo va a ejecutarse; y avisa cuando se acaban las notificaciones disponibles.

# En /tmp crea la carpeta notificacion-sonido, dentro de ella esta un archivo de texto con los datos de cuando fue enviada la notificación, en cuanto tiempo va a ejecutarse y cual es el mensaje. También se encuentra el archivo de sonido para notify-send. Al terminar de ejecutarse el script borra dicha carpeta junto con su contenido.

# Crea la carpeta para notificacion-sonido
mkdir "/tmp/notificacion-sonido/"

# Se encargan de buscar archivos especificos.

buscarconls1=`ls "/tmp/notificacion-sonido/notificacion-1-remind.wav"`

buscarconls2=`ls "/tmp/notificacion-sonido/notificacion-2-remind.wav"`

buscarconls3=`ls "/tmp/notificacion-sonido/notificacion-3-remind.wav"`

buscarconls4=`ls "/tmp/notificacion-sonido/notificacion-4-remind.wav"`

buscarconls5=`ls "/tmp/notificacion-sonido/notificacion-5-remind.wav"`

buscarconls6=`ls "/tmp/notificacion-sonido/notificacion-6-remind.wav"`

buscarconls7=`ls "/tmp/notificacion-sonido/notificacion-7-remind.wav"`

buscarconls8=`ls "/tmp/notificacion-sonido/notificacion-8-remind.wav"`

buscarconls9=`ls "/tmp/notificacion-sonido/notificacion-9-remind.wav"`

buscarconls10=`ls "/tmp/notificacion-sonido/notificacion-10-remind.wav"`

buscarconls11=`ls "/tmp/notificacion-sonido/notificacion-11-remind.wav"`

# Establece el mensaje
msg=$(zenity --entry --title="notificacion-sonido.sh" --text="Recordatorio")

# Establece el tiempo en minutos. Con la variable $tim se estable el tiempo en minutos. La variable $tim2 se encarga de hacer la conversión.
tim=$(zenity --entry --title="notificacion-sonido.sh" --text="Tiempo para ejecutarse en minutos" --entry-text "1")
tim2=`echo "$tim * 60" | bc`

# Establece la ruta del icono de la notificación.
remind_icon="/home/`whoami`/.gnome2/nautilus-scripts/a.jpg"

# Bucle para tener hasta diez mensajes pendientes y que avise cuando se acabaron los disponibles.

if [ "x${buscarconls1}" != "x/tmp/notificacion-sonido/notificacion-1-remind.wav" ]
then
# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-1-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-1-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-1-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-1-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-1-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls2}" != "x/tmp/notificacion-sonido/notificacion-2-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-2-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-2-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-2-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-2-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-2-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls3}" != "x/tmp/notificacion-sonido/notificacion-3-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-3-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-3-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-3-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-3-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-3-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls4}" != "x/tmp/notificacion-sonido/notificacion-4-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-4-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-4-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-4-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-4-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-4-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls5}" != "x/tmp/notificacion-sonido/notificacion-5-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-5-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-5-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-5-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-5-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-5-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls6}" != "x/tmp/notificacion-sonido/notificacion-6-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-6-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-6-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-6-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-6-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-6-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls7}" != "x/tmp/notificacion-sonido/notificacion-7-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-7-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-7-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-7-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-7-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-7-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls8}" != "x/tmp/notificacion-sonido/notificacion-8-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-8-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-8-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-8-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-8-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-8-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls9}" != "x/tmp/notificacion-sonido/notificacion-9-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-9-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-9-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-9-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-9-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-9-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls10}" != "x/tmp/notificacion-sonido/notificacion-10-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-10-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-10-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-10-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-10-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-10-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

else [ "x${buscarconls11}" != "x/tmp/notificacion-sonido/notificacion-11-remind.wav" ]
zenity --timeout "2" --title "notify-send" --info --text "Se acabaron las notificaciones de sonido disponibles"

# Sale del script
exit

fi