Openresty(十八)使用lua-resty-shell 执行shell 脚本

一    模块地址

(1)功能

1)  lua-resty-shell 用于'非阻塞'的执行shell命令的Lua模块

2)  通过openresty实现'本地[unix socket]或远程执行'shell'命令'或'脚本'

(2) lua-resty-shell的两个版本

①    openresty官方内置版本

第一种'内置'版本需要'openresty版本5.0+'以后才支持

  

②    麻省理工Juce版本

第二种Juce版,支持'所有版本'的openresty,但需要做'一定'的配置,两种版本性能'差异未知'

相关参考

其它参考

补充参考

(3)lua自带的

非openresty 提供的网络操作'系统命令行'调用'os.execute 等'应该尽量'避免'

 openresty阻塞操作 

 os.execute 

 os.popen 使用管道符

(4)使用官方自带

Openresty(十八)使用lua-resty-shell 执行shell 脚本_第1张图片

Openresty(十八)使用lua-resty-shell 执行shell 脚本_第2张图片

备注:本质是sh -c "字符串" 

Openresty(十八)使用lua-resty-shell 执行shell 脚本_第3张图片①    编写lua脚本

Openresty(十八)使用lua-resty-shell 执行shell 脚本_第4张图片

②    nginx.conf配置

③    测试

思考: 'who 命令'是谁?

④    多个命令

直接使用';'隔开

⑤    脚本

Openresty(十八)使用lua-resty-shell 执行shell 脚本_第5张图片

Openresty(十八)使用lua-resty-shell 执行shell 脚本_第6张图片

Openresty(十八)使用lua-resty-shell 执行shell 脚本_第7张图片

说明:假定openresty指定'user root[权限最大]',默认是'nginx'

补充:/tmp和/mnt不管什么'use'指定什么用户都'无法'执行其中的脚本,甚至都'无法找到'该文件,即使是'root',原因'未知[可能是缺陷?]'

附加:关于'脚本传参,后续探究'

⑥  调试

Openresty(十八)使用lua-resty-shell 执行shell 脚本_第8张图片  

思考:如何涉及到'权限问题',尝试'user root root',看看效果,并且看下'not ok -->对应stderr信息'

二    ssh远程执行shell脚本或命令

+++++++++++'执行'shell脚本+++++++++++

1)  远程执行本地的shell脚本  --> ssh user@ip 'bash -s' < test.sh a b   --> "带参数"

2)  远程执行'远端'的脚本     --> ssh user@ip "ls;sh start_project.sh&" 

3)  bash -c  "/path/to/file" $1 $2 写文件的"绝对"路径,用"双引号"括起来,且文件要具有'可执行'权限

restydoc查看openresty相关文档 

你可能感兴趣的:(Openresty,lua)