如果脚本从 /etc/rc.local 运行,lua os.execute 将无法工作。

我有一个简单的lua脚本,监听特定事件,然后发出POST请求到twilio.com网络服务来启动呼叫,然后发送一封邮件。

现在,我使用以下命令运行脚本:

cd /root/mqtt_client/ ; lua /root/mqtt_client/mqtt_scattato.lua &

一切都很好,我收到了呼叫和邮件,在twiliolog.txt(如果您查看代码,我执行“curl ... >twiliolog.txt”来启动呼叫)中,我可以看到twilio响应。

但是

如果我将相同的命令(cd /root/mqtt_client/ ; lua /root/mqtt_client/mqtt_scattato.lua &)放入/etc/rc.local,会发生一些奇怪的事情:

1)我收到邮件,但没有电话!

2)twiliolog.txt(curl的输出)已正确创建,但为空!

我的平台是openwrt障碍打破的路由器。

我真的希望你可以帮助我,谢谢!

点赞
用户2104749
用户2104749

我最终完全删除了 os.execute 的调用。 现在我正在使用 lua 本地的 https sockets:

local https = require("ssl.https")
local call = function (from, to)
        local body = "To=" .. to .. "&From=" .. from .. "&Url=https://demo.twilio.com/welcome/voice/&Timeout=20&Record=false"
        https.request {
                protocol = "tlsv1",
                method="POST",
                url="https://api.twilio.com/2010-04-01/Accounts/***/Calls.json",
                source=ltn12.source.string(body),
                headers = {["content-length"] = #body, ["content-type"] = "application/x-www-form-urlencoded"},
                user="***",
                password="***",
        }
end

我仍然使用 os.execute 发送邮件,而且它的效果良好,因此我认为问题与 curl + os.execute + 启动脚本的组合有关。

我仍然不知道会导致这种行为的问题是什么。

2016-01-07 16:32:01