Mr Transmission, por favor, desligue o PC depois que todos os downloads estiverem concluídos!

3
#!/bin/bash
echo "password" | sudo -S halt

Eu indiquei esse script para a opção " Chamar script quando o torrent é concluído " em: Edit > Preferences > Downloading

Problema : este script encerra o computador após qualquer download concluído, enquanto há mais torrents na fila!

Como posso melhorar isso?

    
por mini 30.04.2013 / 10:26

3 respostas

4

Primeiramente - pare de desligar com o root. Use dbus .

Em seguida, coloque algo no seu script que detecte torrents em execução. Aqui está uma coisinha que usa trasmission-remote para contar o número de torrents em execução que não foram "Concluídos":

transmission-remote --list | sed '1d;$d' | grep -v Done | wc -l

Para criar isso no seu script:

count=$(transmission-remote --list | sed '1d;$d' | grep -v Done | wc -l)
if [ $count -eq 0 ]; then
    dbus-send --system --print-reply --dest=org.freedesktop.Hal \
        /org/freedesktop/Hal/devices/computer \
        org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
fi

Eu não sou um usuário de transmissão, então minha pesquisa pode estar um pouco fora, mas isso deve funcionar. Você pode descobrir que ele não é desligado o tempo todo se houver alguns torrents lá, por exemplo, pausados. Se for esse o caso, brinque com a saída e uma cláusula grep -v ou duas para lidar com as coisas.

Além disso, você pode querer um desligamento programado para que nunca fique em uma situação em que a área de trabalho desligue enquanto estiver nela (para abortá-la). Talvez apenas um cheque adicional para ver qual é a hora.

Observação: transmission-remote exige que você ative o acesso à Web para transmissão de dentro de suas opções.

    
por Oli 30.04.2013 / 11:13
0

A transmissão oferece uma interface RPC que permite que você se comunique com Transmissão programaticamente. Com isso, você pode escrever um script que é executado após o término do download de um torrent (qualquer), como você faz agora. Esses scripts são verificados através da interface RPC, se houver outros torrents ainda baixando. Somente se nenhum for encontrado, o sistema será encerrado, caso contrário, o script sairá sem fazer nada (e aguardará para ser chamado novamente assim que a próxima torrente terminar).

Não tenho certeza se você pode conversar com a interface RPC em um script bash, mas de acordo com a Página de transmissão existem "bibliotecas de controle remoto" para usar em Ruby, Python, PHP ou Perl. Por isso, não deve ser difícil escrever um script em qualquer uma dessas linguagens para realizar a tarefa descrita acima.

    
por Henning Kockerbeck 30.04.2013 / 11:07
0

Como @Henning disse, faça uso do transmissionrpc para obter o status de todos os torrents. Se nenhum deles ainda estiver ativo, você poderá prosseguir e desligar o computador.

Eu escrevi um pequeno programa em Python para fazer isso. Você pode encontrá-lo aqui .

    
por rohithpr 26.10.2015 / 16:17