A veces nos estamos bajando algo bastante grande (la imagen iso de nuestra distribución linux favorita, por ejemplo) y lo interrumpimos por no dejar el equipo en funcionamiento y desatendido por mucho rato. A mi me pasa. Por eso me interesa una forma de apagar el equipo automáticamente al terminar una descarga.
Este script no tiene nada de esotérico; es muy, muy sencillo. Esta es la primera versión. Lo mejoraré con más opciones y condiciones de apagado.
Si estamos descargando algo con amule, tengamos en cuenta que este programa lo almacena primero en su carpeta temporal, y después lo pasa a su carpeta “incoming”. Este script cuenta los ficheros que hay en la carpeta “incoming” y cuando la cuenta sube en el número que le especificamos (el número de descargas que estamos esperando que terminen) apaga el equipo.
Las descargas llevadas a cabo de otra manera deberán tener otra condición. Por ejemplo, pudiera ocurrir que con otro programa, al iniciar la descarga se cree el fichero definitivo y uno temporal y al terminar, el temporal desaparezca. En este caso, la variación en la cuenta de ficheros sería -1 en lugar de 1.
Aquí pongo el script por si le sirve a alguien. Para usar “shutdown” tenéis que tener los permisos adecuados.
——————————————————————————————-
#! /bin/bash
# script para apagar el equipo tras concluir una descarga
CARPETA=”/home/Descargas/in/” # directorio donde se aplica la condición
TIEMPO_ESPERA=10 # tiempo de espera en segundos
descargas=1
cuenta1=$(ls -1 $CARPETA | wc -l)
cuenta1=`expr $cuenta1 + $descargas`
while true
do
cuenta=$(ls -1 $CARPETA | wc -l)
if [ $cuenta1 == $cuenta ]; then
shutdown -h now
else
tim=$(date)
echo $tim
fi
sleep $TIEMPO_ESPERA
done
exit
————————
Hemos usado el programa “wc” que, con su opción “-l” cuenta las líneas que recibe por la entrada estandar o que contiene un fichero.