通过CGI执行bash脚本

时间:2018-11-12 07:30:31

标签: linux bash shell scripting cgi

大家!

从浏览器执行.sh脚本时遇到麻烦。 echo命令效果很好。但是,当我将值存储在变量中并将其作为参数传递给另一个脚本时,它将不起作用。 感谢任何帮助。

示例:

在这里,我将$ XX传递给另一个脚本

if [ -z "$QUERY_STRING" ]; then
    exit 0

其他

 XX=`echo "$QUERY_STRING" | sed -n 's/^.*val_x=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
 if [ -z "$XX" ]; then
    echo "X is empty"
 else

    echo "Processing..."
    /sas/oljas_scripts/find_usage_of_tables.sh $XX
    echo "Done"
 fi

 YY=`echo "$QUERY_STRING" | sed -n 's/^.*val_y=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
 ZZ=`echo "$QUERY_STRING" | sed -n 's/^.*val_z=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
 echo "val_x: " $XX
 echo '<br>'
 echo "val_y: " $YY
 echo '<br>'
 echo "val_z: " $ZZ

fi

1 个答案:

答案 0 :(得分:0)

您尝试执行的文件/sas/oljas_scripts/find_usage_of_tables.sh对于Web服务器而言不可执行。当前是:

-rwxrw-r-- 1 sas sas 1540 Nov 12 12:58 find_usage_of_tables.sh

这意味着sas用户可以做所有事情,sas组可以读写,但不能执行,其他所有人都可以读。值得注意的是,Web服务器需要能够读取和执行文件,但是这样做失败。

将文件设置为所有人都可读并可执行(不推荐):

chmod 755 /sas/oljas_scripts/find_usage_of_tables.sh

或将文件的组设置为Web服务器所在的组,并相应地设置文件的组权限:

chmod 754 /sas/oljas_scripts/find_usage_of_tables.sh
chgrp www-data /sas/oljas_scripts/find_usage_of_tables.sh

您可能需要sudo。另外,Web服务器的组名可能不是www-data-检查您的Web服务器配置,或者像this answer的建议那样从进程列表中读取它。