繁体   English   中英

lua 运行带参数的 shell 命令不起作用

[英]lua run a shell command with parameters doesn't work

我正在尝试从 lua 脚本执行命令。 该命令是简单地运行一个名为“sha_compare.py”的 python 脚本,其中接收 3 个 arguments,其中两个是来自 lua 脚本的变量 - dady_data 和 sha:

local method = ngx.var.request_method
local headers = ngx.req.get_headers()

if method == "POST" then
   ngx.req.read_body()
   local body_data = ngx.req.get_body_data()
   local sha = headers['X-Hub-Signature-256']
   ngx.print(os.execute("python3 sha_compare.py"..sha..body_data))
else

由于我调用 arguments 的方式,该脚本失败。 如果我从 cmd 运行它,实际命令将类似于:

python3 python3 sha_compare.py sha256=ffs8df aaaaa

请告诉我应该如何更改我的代码以正确调用具有 3 个变量的 python 脚本。

如果不可能或难以实施,请告诉我如何调用将接收这 3 个参数的 a.sh 脚本。

您没有在 arguments 之间提供空格:您正在尝试执行

python3 sha_compare.pysha256=ffs8dfaaaaa

做这个:

os.execute("python3 sha_compare.py "..sha.." "..body_data)

将命令构建为表格通常更容易,并将其连接起来执行:

local cmd = { 'python3', 'sha_compare.py', sha, body_data }
os.execute(table.concat(cmd, " "))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM