Существует ли способ знать если в настоящее время активный демон передачи?

У меня есть ноутбук, который я использую в качестве станции медиа, подключенной к моему ТВ, иногда я упал бы сон и забыл бы завершать работу ноутбука, и это - нежелательное поведение. таким образом, я использую crontabs для завершения работу моего ноутбука каждый день в 7:00, потому что я уверен, что всегда или сплю или не дома затем.

Однако иногда я на самом деле загружаю что-то с помощью демона передачи и предпочел бы, чтобы ноутбук не выключил в то время. Существует ли способ проверить, загружает ли демон передачи или нет? как файл отмечают демоном передачи? я, хотя о сканировании активных портов, используемых демоном передачи, но я полагал, что могло бы быть более изящное решение.

-1
задан 12 October 2019 в 20:25

1 ответ

Конечно. Первый - с передачей, не активной, второй.

rinzwind@schijfwereld:~$ ps -ef | grep transmission | grep -v grep

rinzwind@schijfwereld:~$ ps -ef | grep transmission | grep -v grep
rinzwind 10490     1 11 22:04 ?        00:00:00 transmission-gtk

Существует ли способ проверить, загружает ли демон передачи или нет?

Да. Существует API и здесь старый сценарий с 2013, делая завершение работы для MAC. Требует 1 изменения:

subprocess.call(['osascript', '-e','tell application "Finder" to shut down'])

потребности быть чем-то вроде этого:

subprocess.call(['shutdown', '--now','turn off'])

Это предполагает установку веб-интерфейса на порте 9091


Пред req:

cd ~
virtualenv .transmission_env
source .transmission_env/bin/activate
pip install transmissionrpc
deactivate

и сценарий:

#!/Users/fots/.transmission_env/bin/python

import subprocess

import transmissionrpc
from transmissionrpc.error import TransmissionError


def main():
    all_done = True
    try:
        tc = transmissionrpc.Client('localhost', port=9091)
        for torrent in tc.get_torrents():
            if torrent.status == 'downloading':
                all_done = False
                break
        if all_done:
            subprocess.call(['osascript', '-e',
                             'tell application "Finder" to shut down'])
    except TransmissionError:
        pass

if __name__ == "__main__":
    main()
3
ответ дан 22 December 2019 в 00:21

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

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