Nginx Lua使用os.execute在Linux上启动hostapd

时间:2017-06-15 16:53:11

标签: linux nginx lua

我可以使用openresty点击在Linux上运行的Nginx Webserver,并成功运行许多不同的命令。我无法运行的唯一命令是带有lua的os.execute的hostapd。请参阅以下代码。唯一不起作用的命令是最后一个命令。

命令失败:

set_command_status = os.execute("source /etc/profile ; /usr/bin/hostapd -B /etc/hostapd/hostapd.conf >> /tmp/hostapd.log 2>&1")
    ngx.log(ngx.INFO, "Hostapd launch status: " .. set_command_status)
    ngx.log(ngx.INFO, "Done Restarting HOSTAPD")

完整代码:

-- Restart hotspot with new name
ngx.log(ngx.INFO, "Restarting HOSTAPD: " .. json_table.hotspot_name)
set_command_status = os.execute("kill -9 `pgrep -f hostapd`")
ngx.log(ngx.INFO, "Kill status: " .. set_command_status)
set_command_status = os.execute("cp /mnt/apps/hostapd.conf /tmp/")
ngx.log(ngx.INFO, "Copy status: " .. set_command_status)
set_command_status = os.execute("find /tmp -type f -name \"hostapd.conf\" | xargs sed -i -e \"s/wpa_passphrase=asdfasdf/wpa_passphrase=password/g\"")
ngx.log(ngx.INFO, "Hostapd config password status: " .. set_command_status)
set_command_status = os.execute("find /tmp -type f -name \"hostapd.conf\" | xargs sed -i -e \"s/ssid=nightcrawler/ssid=FC3550-" .. json_table.hotspot_name .. "/g\"")
ngx.log(ngx.INFO, "Hostapd config ssid status: " .. set_command_status)
set_command_status = os.execute("source /etc/profile ; /usr/bin/hostapd -B /etc/hostapd/hostapd.conf >> /tmp/hostapd.log 2>&1")
ngx.log(ngx.INFO, "Hostapd launch status: " .. set_command_status)
ngx.log(ngx.INFO, "Done Restarting HOSTAPD")

-- Done
ngx.log(ngx.INFO, "Success setting HotSpot Name")

ngx.exit(ngx.OK)

日志说:

$ cat /tmp/hostapd.log
Configuration file: /etc/hostapd/hostapd.conf
wlan1: interface state UNINITIALIZED->COUNTRY_UPDATE

如何以这种方式从nginx和openresty启动hostapd?

0 个答案:

没有答案