torrent下载完成后,传输将不会运行shell脚本



我希望让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,我希望在触发脚本后使用这些变量。我是否在文件中没有设置任何会阻止脚本正常工作的内容?我将如何使用环境变量?

我可能会在这里回答一个不同的问题,但如果你只是为了获得Transmission Daemon下载到用户的写入权限,请尝试不同的方法。

我正在我的用户名下运行我的传输守护程序,正如它的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

注意UserGroupUMask(大写M)指令。有关Systemd手册页,请参阅执行环境配置。

然后运行:

sudo chown -fR user /data/transmission/completed
sudo systemctl daemon-reload
sudo service transmission-daemon restart

并且您应该设置:)

将执行脚本的用户添加到具有默认sudo访问权限的group


Fedora -将用户添加到wheel

sudo usermod -aG wheel $(whoami)

Ubuntu -用户组:sudoadmin(已弃用)

最新更新