BandaAncha.eu

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

Necesito consejo con este mini-script

BocaDePez
BocaDePez

Hola, buenas noches.

Buscando por Google he conseguido este script que permite apagar el sistema de forma automática cuando Firefox termina una descarga directa:

#!/bin/bash

# Este script revisa periódicamente la existencia de algún/os archivo/s con extensión *.part (archivo/s en proceso de descarga de Firefox). Cuando Firefox termina de descargar, el script apagará el sistema automáticamente
# CÓMO USAR: ejecutar como root en el directorio donde se encuentre/n el/los archivo/s con extensión *.part: 'apagarfirefoxscript [nombre_fichero].part' ó 'apagarfirefoxscript *.part'

FILE=$1

if [ -e $FILE ]; then

# Mientras que exista/n el/los archivo/s, se espera 60 seg. y se vuelve a comprobar
while [ -e $FILE ]; do

echo "El/los archivo/s '$FILE' existe/n"
sleep 60

done

# Cuando la descarga se haya completado, el/los archivo/s ya no existe/n y se procede a apagar el sistema
echo "Descarga finalizada. Se apaga el sistema..."
shutdown -h now

else

echo "El/Los fichero/s no existe/n"

fi

Mi pregunta es si es posible añadirle algo al script para que revise de forma recursiva el directorio que se le indique al script para que busque archivos con la extensión *.part y, cuando ya no los encuentre, que apague el sistema. De esa manera, este script también me serviría para apagar automáticamente el sistema una vez que transmissioncli (Transmission por línea de comandos) termine de descargar cuando lo utilizo en modo paralelo.

Muchas gracias.

OvejaNegra

Pues si el script se llama apagarfirefoxscript ¿ por qué no lo llamas así?

ls directorio/*.part | xargs apagarfirefoxscript

O si quieres crear un script, metes todo eso que has puesto dentro de una funcion y luego llamas a la funcion:

#!/bin/bash

function mifuncion {
  //aqui pones todo lo que habias escrito
}

DIR="ruta/al/directorio/que/quiero/vigilar"
for archivo in $DIR/*.part; do mifuncion "$archivo";done

DIR=$1 también está chulo

No lo he probado pero muy diferente no será

🗨️ 4
BocaDePez
BocaDePez

Gracias por su respuesta, amigo, pero de esa forma solamente se vigila un directorio, y no sus subdirectorios de forma recurrente (que es lo que busco).

Salud.

🗨️ 3
BocaDePez
BocaDePez

El comando find supliría a ls en ese caso

🗨️ 1
BocaDePez
BocaDePez

Gracias, amigo, por la idea.

Sí, con find busca archivos *.part de forma recurrente y lo manda al script. Pero el problema es cuando hay varios archivos *.part: find encuentra el primero, lo envía al script, y cuando éste ya no existe apaga el sistema; no sigue buscando más archivos *.part.

Creo que lo ideal sería poder introducir la búsqueda de find dentro del script, pero no sé en qué línea debería situarlo y si debo encorsetarlo entre paréntesis, corchetes, llaves...

Muchas gracias.

Salud.

OvejaNegra

Ah vale, entonces no hay más remedio que hacer una búsqueda. Como ya te han dicho, usa find en vez de ls.