FreeNAS 上的传输在完成时不调用脚本

Transmission on FreeNAS does not call script on completion

我已经尝试得到这个 运行ning 一个多星期了,但一直不知所措。我正在尝试使用 settings.json 配置在完成时调用脚本,如下所示:

"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/posttorrent.sh",

我的脚本在jail的根目录下,属于传输。我还检查了文件的权限(755)并且有 运行 chmod +x /posttorrent.sh.

我什至将文件简化为只输出到日志文件,如下所示:

#!/bin/bash
echo "$TR_TORRENT_NAME is completed" >> /posttorrent.log

然而,到目前为止,无论我下载什么文件,我在任何地方都没有 posttorrent.log 文件。我不确定我是否在正确的轨道上,因为传输设置为日志级别 3,但我什至没有在 /var/log/debug.log 中看到对脚本的调用。我确信我遗漏了一些简单的东西,因为其他人已经能够让这个工作正常进行,我现在只是没有选择,因为我想我已经阅读 and/or 尝试了我能找到的与这个问题相关的一切。谢谢!

该脚本依赖于 /bin/bash 存在于监狱中。 您可以更改脚本以使用 /bin/sh,更改 /bin/bash /usr/bin/env bash 或 link /path/to/port/bin/bash /usr/local/bin/bash(或 bash 相对于 jail 目录,但如果它存在,它应该在 /usr/local/bin).

ln -s /usr/local/bin/bash /path/to/jail/bin/bash

此外,根目录(默认情况下)只能由 root 写入,所以 transmission 用户没有 permission 创建 根目录下的日志文件。适当地允许创建 日志文件将目标目录更改为 transmission 用户有 permission 可以写入。例如 /var/db/transmission/posttorrent.log,如果使用 FreeNAS 插件。 可以使用 transmission 用户创建一个目录 install utility:

install -d -o transmission -g transmission /home/transmission

或者,可以使用 install utility,或者可以用chown设置所有者:

install -o transmission -g transmission -m 644 /dev/null /posttorrent.log
# or on an existing log file
chown transmission /posttorrent.log
chgrp transmission /posttorrent.log
# normally the mode bits will already be 644
chmod 644 /posttorrent.log

传输时也会重写配置文件 退出。所以 transmission-daemon 之前必须停止 编辑设置文件。但是,如果使用传输插件, 设置存储在 SQLite 数据库中
(/usr/pbi/transmission-amd64/transmissionUI/transmission.db)
并且设置文件将从数据库中重新创建 启动。 sqlite3 可用于手动编辑数据库,或在 FreeNAS 网站上编辑插件的设置 UI.

sqlite3 /usr/pbi/transmission-amd64/transmissionUI/transmission.db <<EOF
UPDATE freenas_transmission SET enable=1;
UPDATE freenas_transmission SET script_post_torrent="/posttorrent.sh";