Observador de pastas manual para transmissão?

0

Por alguma razão, a funcionalidade watch-dir da transmissão não funciona para mim (tentei algumas "soluções" que encontrei, mas nada funcionou). Então, eu criei um script para fornecer isso (note que coloquei esse script no meu crontab para ser executado por hora, então eu precisava adicionar fullpaths para tudo):

#!/bin/bash

prefix='/home/user'
folder=$prefix'/path/to/watched/dir'
cd $folder

count=$(ls -1 *.torrent 2>/dev/null | wc -l)
if [ $count != 0 ];then
    echo $count torrents files found
    for torrent in '*.torrent'; do
        echo adding $torrent
        transmission-remote -n 'transmission:transmission' -a $folder/"$torrent"
        rm $folder/$torrent
    done
else
    echo no torrents found
fi

O que eu tenho com esse script é que ele funciona se houver apenas um arquivo torrent. Mas se houver 2 ou mais, apenas 1 deles será adicionado, todos eles serão removidos e a linha echo adding $torrent mostrará todos os torrents.

O que estou fazendo de errado?

    
por kurokirasama 09.07.2018 / 03:42

1 resposta

3

Eu suspeito que a linha

for torrent in '*.torrent'; do

não está expandindo para uma lista de arquivos porque você colocou entre aspas . Ele expande mais tarde cada vez que $torrent é usado, mas isso passa todos os seus arquivos para a transmissão de uma só vez.

Reescreva esta linha como

for torrent in *.torrent; do

Eu também recomendo usar nullglob . Consulte para percalços de glob de loop .

Além disso, inotify-wait pode ser usado para acionar um script de shell quando um arquivo é criado em um diretório.

    
por 09.07.2018 / 04:04