重新启动后无法从 tcl(eggdrop bot)卷曲 freebsd/freenas-jail

cannot curl from tcl (eggdrop bot) after restart freebsd/freenas-jail

我正在 运行 建立一个免费的监狱环境,运行 一些 eggdrop 脚本。 其中一个脚本在某个时候执行命令(在 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,所有路径都是正确的。

问题只在监狱重启后出现,有人知道问题出在哪里吗?

如有任何帮助,我们将不胜感激。

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

我将研究在引导时启动机器人的其他方法。我现在正在手动启动 eggdrop,问题似乎已经解决了。

您没有在 运行 正在运行您的机器人的主机上安装 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 会容易得多,但如果您只是在一个地方调用它,硬编码一个位置是一个非常容易的解决方法。