Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将文本框值传递给bash脚本_Php_Bash_Shell_Cgi - Fatal编程技术网

Php 如何将文本框值传递给bash脚本

Php 如何将文本框值传递给bash脚本,php,bash,shell,cgi,Php,Bash,Shell,Cgi,这是我的第一个问题,CMIIW: 这里是我的php脚本示例 <form method="GET" action="/var/www/cgi-bin/mode2.sh"> <table align="center" nowrap> <tr>><td>IP address :</TD><TD><input type="text" name="ip"></td></tr> <

这是我的第一个问题,CMIIW:

这里是我的php脚本示例

<form method="GET" action="/var/www/cgi-bin/mode2.sh">
     <table align="center" nowrap>
<tr>><td>IP address :</TD><TD><input type="text" name="ip"></td></tr>
<tr><td>netmask :</TD><TD><input type="text" name="ip2"></td></tr>
</tr></table>

 <input type="submit" value="Send">
 <input type="reset" value="Reset"></p></form>

我想从web浏览器输入文本框值,例如IP和netmask,然后将值发送到bash并保存到ifcfg-eth0文件。我知道这听起来很危险,我只是想学习。有什么建议吗?

不要让action属性指向要运行的shell脚本,而是让action属性指向php文件,如

<form method="GET" action="UserInputIPAddrPHP.php">
使其可执行:

me@somewhere$ chmod +x mode2.sh
希望这对你有帮助


谢谢

您不应该将bash用作cgi脚本。 但如果确实需要,您可以通过操纵变量
$QUERY\u STRING

#!/bin/bash
echo Content-type:text/plain
echo ""

read IP MASK <<< $(echo $QUERY_STRING |  sed -r 's/&?ip2?=/ /g')
#/bin/bash
回显内容类型:文本/普通
回声“”

读取IP掩码这不会像这样工作,至少您需要将
操作设置为web服务器可以访问的路径,在您的情况下可能是:
/cgi-bin/mode2.sh
。然后web服务器可能会将
mode2.sh
作为文本文件显示给您,除非您有一些特殊的配置,允许web服务器执行shell脚本。我的示例php,我剪切了我的脚本。有什么帮助吗?我试着按照您的步骤操作,但仍然无法将值发送给bash。UserInputIPAddrPHP.php sript:
$sh=“/path/to/mode2.sh”.escapeshellarg($IP_Addr)。”.escapeshellarg($NetMask);exec($sh,$output=array(),$return\u value)
bash脚本:
echo=echo“IPADDR=$1”>/etc/sysconfig/network scripts/ifcfg-eth0 echo“NETMASK=$2”>/etc/sysconfig/network scripts/ifcfg-eth0
@Haruru请找到下面的脚本,将用户输入(IP,NETMASK)重定向到文件/etc/sysconfig/network scripts/ifcfg-eth0 IP=“$1”;网络掩码=“$2”;echo“$IP”>>/etc/sysconfig/network scripts/ifcfg-eth0 echo“$NetMask”>>/etc/sysconfig/network scripts/ifcfg-eth0希望这可能会帮助您感谢您,所以在发送到bash脚本之前,请尝试打印变量的值,即打印$IP和$Netmask@Haruru欢迎光临。有什么需要帮忙的请告诉我
#!/bin/sh
command "$1" "$2"; # command is actual command you want to run like cp,mv etc
me@somewhere$ chmod +x mode2.sh
#!/bin/bash
echo Content-type:text/plain
echo ""

read IP MASK <<< $(echo $QUERY_STRING |  sed -r 's/&?ip2?=/ /g')