1

我正在运行一个运行一些 eggdrop 脚本的 freenas 监狱环境。其中一个脚本有时会执行命令(在 tcl 中):

set nfoc [exec curl -m 10 -s -f -k -3 --connect-timeout 3 -L "$url" -o "/tmp/$filename"]

所以它会下载一个文件。当我设置它时一切都运行良好,但是在重新启动监狱之后(甚至不是那个主服务器,只是监狱)。

我收到以下错误:

Tcl error [::bc::onEncryptedText]: couldn't execute "curl": no such file or directory

我确保 eggdrop 的目录全部修改为 0777,并且所有路径都正确。

问题只有在监狱重新启动后才会出现,有人知道问题可能是什么吗?

任何帮助将不胜感激。

4

2 回答 2

1

要么你没有curl安装在运行你的机器人的主机上,要么它不在 PATH 上。由于 cron 任务以大大减少的 PATH 运行(出于各种原因,包括安全性),您必须在脚本中设置 PATH 或使用curl. 两者都很容易。

要在脚本中设置 PATH,请echo $PATH在终端中使用以查看运行情况,然后在脚本中执行此操作(最好尽早):

set ::env(PATH) "/the/path/you/found/earlier/for/example:/usr/local/bin:/bin:/usr/bin"

要硬编码 的位置curl,请在终端中使用which curl以找到它,然后在脚本中使用该值,如下所示:

set nfoc [exec /usr/local/bin/curl -m 10 -s -f -k -3 --connect-timeout 3 -L "$url" -o "/tmp/$filename"]

哪个最好?好吧,如果你curl从多个地方调用,设置 PATH 会容易得多,但如果你只是在一个地方调用它,硬编码一个位置是一个非常容易的解决方法。

于 2015-05-11T08:40:21.923 回答
0

好的,似乎问题出在 Eggdrop 的 'botchk' cronjob 文件上。它看起来不像freebsd兼容。

我将研究在引导时启动机器人的其他方法。我现在正在手动启动蛋滴,问题似乎消失了。

于 2015-05-10T00:06:32.813 回答