我希望让 Transmission bittorrent 客户端执行一个脚本,当 torrent 完成下载时,该脚本会更改已完成文件夹中所有 torrent 的所有者和权限。
我在/etc/transmission-daemon/settings.json中使用以下相关设置:
"download-dir": "/data/transmission/completed",
"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/home/user/script.sh",
在 torrent 完成后,脚本似乎没有执行,我知道除了脚本本身的内容之外,还可能出现其他问题。脚本文件的所有者是 debian-transmission,我的权限设置为 777,所以 Transmission 访问脚本应该不会有问题,除非我在这里错过了一些东西。
/home/user/script.sh 文件如下:
#!/bin/bash
echo sudopassword | /usr/bin/sudo -S /bin/chmod -f -R 777 /data/transmission/completed
echo sudopassword | /usr/bin/sudo -S /bin/chown -f -R user /data/transmission/completed
我知道以这种方式使用 sudo 命令的形式很糟糕,但我可以自己执行脚本并且它会正常工作。我不确定为什么 Transmission 不执行脚本。 Transmission 支持一些环境变量,例如 TR_TORRENT_NAME,我想在触发脚本后使用它们。文件中是否有任何我未设置的内容会阻止脚本正常工作以及如何使用环境变量?
我可能会在这里回答一个不同的问题,但如果您尝试这样做只是为了获得对您的用户的传输守护程序下载的写入权限,请尝试不同的方法。
我正在我的用户名下运行我的传输守护程序,如其
systemd
服务文件中所设置的那样。 (/etc/systemd/system/multi-user.target.wants/transmission-daemon.service
就我而言)
[Unit]
Description=Transmission BitTorrent Daemon
After=network.target
[Service]
User=myuser # set user here
Group=mygroup # set group here :)
UMask=0022 # 0022 gives 644 permissions on files (u+w), 0002 gives 644 (g+w), 0000 gives 666 (a+w)
Type=notify
ExecStart=/usr/bin/transmission-daemon -f --log-error
ExecStop=/bin/kill -s STOP $MAINPID
ExecReload=/bin/kill -s HUP $MAINPID
[Install]
WantedBy=multi-user.target
注意
User
、Group
和 UMask
(大写 M)指令。
请参阅Systemd 手册页的执行环境配置。
然后运行:
sudo chown -fR user /data/transmission/completed
sudo systemctl daemon-reload
sudo service transmission-daemon restart
你应该设置:)
wheel
组sudo usermod -aG wheel $(whoami)
sudo
或 admin
(已弃用)