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

时间:2014-10-10 17:04:06

标签: linux bash shell ubuntu bittorrent

我希望传输bittorrent客户端执行一个脚本,当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没有执行脚本。传输支持一些环境变量,如TR_TORRENT_NAME,我想在触发脚本后使用它。我没有在文件中设置任何会阻止脚本正常工作的内容以及如何使用环境变量?

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

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


Fedora -将用户添加到wheel

sudo usermod -aG wheel $(whoami)

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

答案 1 :(得分:0)

我可能会在这里回答一个不同的问题,但是如果您只是为了获得对用户的传输守护程序下载内容的写许可权而尝试,请尝试另一种方法。

我正在使用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)伪指令。 参见Execution environment configuration for Systemd manpage

然后运行:

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

,您应该设置:)