Mr Transmission, пожалуйста, выключите компьютер после завершения всех загрузок!

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

Я указал этот сценарий на опцию « Вызов сценария, когда торрент завершен » в разделе: Edit > Preferences > Downloading

Проблема : этот сценарий завершает работу компьютер после какой-либо законченной загрузки, когда в очереди больше торрентов!

Как я могу улучшить его?

3
задан 30 April 2013 в 12:26

3 ответа

Как сказал @Henning, используйте параметр translationrpc для получения статуса всех торрентов. Если ни один из них не активен, вы можете выключить компьютер.

Я написал небольшую программу на Python для этого. Вы можете найти его здесь .

0
ответ дан 30 April 2013 в 12:26

Transmission предлагает интерфейс RPC, который позволяет программно общаться с Transmission. При этом вы можете написать скрипт, который будет выполнен после того, как один (любой) торрент завершит загрузку, как вы делаете сейчас. Эти скрипты проверяют через интерфейс RPC, есть ли другие загружаемые торренты. Только если ничего не найдено, система выключается, иначе скрипт завершает работу, ничего не делая (и ожидает повторного вызова после завершения следующего торрента).

Я не уверен, можете ли вы общаться с интерфейсом RPC в скрипте bash, но согласно домашней странице Transmission есть «библиотеки удаленного управления», которые можно использовать в Ruby, Python, PHP или Perl. Так что не составит труда написать скрипт на любом из этих языков, чтобы выполнить задачу, описанную выше.

0
ответ дан 30 April 2013 в 12:26

Во-первых - перестань выключаться с рутом. Используйте dbus .

Затем, добавьте что-нибудь в ваш скрипт, который обнаружит запущенные торренты. Вот кое-что, что использует trasmission-remote для подсчета количества запущенных торрентов, которые не «выполнены»:

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

Чтобы встроить это в ваш скрипт:

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

Я не пользователь передачи, поэтому мой поиск может быть немного отключен, но это должно сделать работу. Вы можете обнаружить, что он не выключается все время, если есть некоторые торренты, которые, например, приостановлены. Если это так, поэкспериментируйте с выходными данными и предложением grep -v или двумя для обработки вещей.

Кроме того, может потребоваться временное отключение, поэтому вы никогда не окажетесь в ситуации, когда рабочий стол выключается, пока вы на нем (так что вы можете прервать его). Возможно, просто дополнительная проверка, чтобы увидеть, сколько времени.

Примечание: transmission-remote требует, чтобы вы включили веб-доступ к передаче из его опций.

0
ответ дан 30 April 2013 в 12:26

Другие вопросы по тегам:

Похожие вопросы: