【发布时间】:2014-12-05 22:11:05
【问题描述】:
我希望让传输 bittorrent 客户端执行一个脚本,在种子下载完成时更改已完成文件夹中所有种子的所有者和权限。
我在 /etc/transmission-daemon/settings.json 中使用了以下相关设置:
"download-dir": "/data/transmission/completed",
"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/home/user/script.sh",
种子完成后脚本似乎没有执行,我知道除了脚本本身的内容之外还有其他问题。脚本文件的所有者是 debian-transmission,我的权限设置为 777,所以传输访问脚本应该没有问题,除非我在这里遗漏了什么。
/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 命令是一种糟糕的形式,但我可以自己执行脚本并且它会正常工作。我不确定为什么传输不执行脚本。传输支持一些环境变量,例如 TR_TORRENT_NAME,一旦脚本被触发,我想使用它们。我没有在文件中设置什么会阻止脚本正常工作以及我将如何使用环境变量?
【问题讨论】:
-
脚本是否设置为可执行?
-
您的主文件夹的权限如何。例如,如果它是
750,那么赋予脚本的权限就无关紧要了。至于环境变量,你应该可以在你的脚本中使用它们......例如chmod 777 /data/transmission/completed/${TR_TORRENT_NAME}。 -
我将脚本移动到 /etc/transmission-daemon 并能够确认脚本正在触发,在脚本中放置一个简单的触摸命令。但是,它似乎不适用于“/bin/echo sudopassword | /usr/bin/sudo -S /bin/chmod -f -R 777 /data/transmission/completed”命令。由于任何其他权限设置,脚本是否无法对文件夹执行操作?
-
啊!好的,这是很好的故障排除。使用
sudo -s,您是否在回显密码的末尾包含换行符,例如:echo "password\n" | sudo -s <command>? -
chmod 777是一个可怕的想法;它甚至可以让不受信任的帐户修改您的其他帐户正在执行的脚本;实际上,它完全破坏了系统的安全模型——在从 Internet 下载不受信任内容的机器上,您最不想做的事情。
标签: bash shell sudo bittorrent