【发布时间】:2019-09-25 07:17:20
【问题描述】:
.lua 文件正在执行,因为我在日志中看到了来自 m.log() 的字符串,但 bash 代码没有被执行。为什么?有什么我想念的吗?此外,os.execute() 中的命令的日志中也没有错误。
#!/usr/bin/lua
function main()
m.log(1,"Starting script execution \n")
os.execute ("route add xx.xxx.xxx.xxx reject")
## i also tried os.execute ("/path/to/file.sh") and giving permision to execute with chmod +x filename.sh
m.log(1,"Script execution finished\n")
end
注意:我直接在我的命令提示符中执行了来自os.execute()的命令,并且IP被添加到了route,所以我的lua代码有问题......
我将具有.lua 和.sh 文件的文件夹/文件的权限更改为777,只是为了测试它是否是权限问题,没有任何改变,我还尝试更改所有者和用户组。
编辑 -
这个波纹管不起作用,因为它位于/root/ 文件夹中,所以我需要将其移至/var/www/。
os.execute ("/path/to/file.sh")
但是 bash 代码没有被执行,os.execute 正在返回退出状态 7(Arg 列表太长),我搜索了一下,我意识到这是因为整个 bash 代码都在引号内执行:@ 987654321@
我该如何解决?
【问题讨论】:
-
在
os.execute()中尝试/sbin/route而不是route -
@EgorSkriptunoff 没用,我目前面临的问题是退出状态 7(参数列表太长)
-
试试
os.execute ("/bin/bash /path/to/file.sh") -
问题是因为我需要用
sudo执行.sh,而且它没有root权限。