#!/bin/sh
|
#执行URL的参数命令
|
#例:http://192.168.1.123/cgi-bin/do/do?sqlite3 /work/iot_cfg.db "select * from alarm"
|
export PATH=/sbin:/usr/sbin:$PATH
|
echo -en "Content-type: text/html; charset=utf-8\n\n"
|
#*****************************************************
|
source ../bin/env.sh
|
db="../bin/db"
|
jsoner="../bin/jsoner"
|
|
# 1. 获取参数逻辑
|
if [ "$REQUEST_METHOD" = "GET" ]; then
|
# 从URL获取参数(格式:?key=value)
|
params="$QUERY_STRING" # 内置环境变量[5,7](@ref)
|
elif [ "$REQUEST_METHOD" = "POST" ]; then
|
# 从标准输入读取POST数据
|
read -t 5 params # 5秒超时防止阻塞[6](@ref)
|
else
|
echo "error: Unsupported method"
|
exit 1
|
fi
|
|
# 2. 参数验证与输出
|
if [ -z "$params" ]; then
|
echo "error: No parameters received"
|
else
|
# 简易解码处理(空格和特殊字符)
|
decoded_params=$(echo "$params" | sed -e 's/%20/ /g' -e 's/%22/"/g' -e 's/%2F/\//g' -e 's/+/ /g')
|
# 命令字符串写入文件
|
echo "$decoded_params" > /tmp/.cmd
|
fi
|
|
#3. 执行命令
|
data=`sh /tmp/.cmd`
|
|
if [ $? -eq 0 ]
|
then
|
echo "{\"code\":\"success\",\"result\":\"$data\"}"
|
else
|
echo "{\"code\":\"error\",\"result\":\"$data\"}"
|
fi
|