我可以使用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?