У меня есть ноутбук, который я использую в качестве станции медиа, подключенной к моему ТВ, иногда я упал бы сон и забыл бы завершать работу ноутбука, и это - нежелательное поведение. таким образом, я использую crontabs для завершения работу моего ноутбука каждый день в 7:00, потому что я уверен, что всегда или сплю или не дома затем.
Однако иногда я на самом деле загружаю что-то с помощью демона передачи и предпочел бы, чтобы ноутбук не выключил в то время. Существует ли способ проверить, загружает ли демон передачи или нет? как файл отмечают демоном передачи? я, хотя о сканировании активных портов, используемых демоном передачи, но я полагал, что могло бы быть более изящное решение.
Конечно. Первый - с передачей, не активной, второй.
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()