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

时间:2013-12-18 12:08:12

标签: 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>
<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>

bash脚本:

#!/bin/bash -x

echo "IPADDR=$ip"       >>/etc/sysconfig/network-scripts/ifcfg-eth0
echo "NETMASK=$ip2"     >>/etc/sysconfig/network-scripts/ifcfg-eth0

我希望输入文本框值形式的Web浏览器,例如IP和网络掩码,并将值发送到bash并保存到ifcfg-eth0文件。我知道这听起来有风险,我只想学习。任何消化?

2 个答案:

答案 0 :(得分:1)

不要让action属性指向你要运行的shell脚本,而是将action属性指向像

这样的php文件
<form method="GET" action="UserInputIPAddrPHP.php">

在UserInputIPAddrPHP.php中,您可以获得用户输入的IP和网络掩码,如下所示

<html>
<body>
<?php
$IP_Addr = $_GET['ip'];
$NetMask = $_GET['ip2'];
$command="/path/to/mode2.sh ".escapeshellarg($IP_Addr)." ".escapeshellarg($NetMask);
exec ($command,$output=array(),$return_value);
if($return_value!==0) {
    #print appropriate message
}

?>
</body>
</html>

$ command是您键入的实际命令,用于在shell上运行脚本。所以相应地设置它。

像这样编写脚本mode2.sh(注意引号):

#!/bin/sh
command "$1" "$2"; # command is actual command you want to run like cp,mv etc

渲染可执行文件:

me@somewhere$ chmod +x mode2.sh

希望这可以帮到你

由于

答案 1 :(得分:0)

你不应该使用bash作为cgi脚本。 但如果真的有需要,可以通过操作变量$QUERY_STRING

来获取IP和网络掩码
#!/bin/bash
echo Content-type:text/plain
echo ""

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