这是我的第一个问题,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文件。我知道这听起来有风险,我只想学习。任何消化?
答案 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
#!/bin/bash
echo Content-type:text/plain
echo ""
read IP MASK <<< $(echo $QUERY_STRING | sed -r 's/&?ip2?=/ /g')