这两天一直用C语言写CGI,但是有一个问题始终没有得到很好的解决,真是郁闷!
实际上是我通过web将系统的网络参数POST过来,用一个C的CGI,保存到一个文本当中,本来是想再调用一个shell脚本,设置好网络就可以了,可是万万没有想到,web调用竟然不成功。
用super解决了权限问题,使web能够运行ifconfig、route命令,使用system调用,结果发现网络参数确实已经保存到了文本当中,但是却没有设置网络。我在脚本当中touch一个随便的文本,结果发现能够创建文本,也就是说脚本实际上是执行了。
我在脚本中source那个文本,想把参数导入到当前环境变量里面,结果值为空。
我在bash下运行脚本,没有问题,可以设置网络参数。为什么到了web上面就不行了,郁闷中。。。。
将分析文本中的参数,echo到一个文本当中,结果为空,为什么呢?在bash下有值。
将ip在脚本直接设置,web运行可以修改网络参数。
郁闷!
尝试使用全C,包括参数设置也用C实现。或者是使用全bash!
全C,依然如果,可能是心情不好导致的吧。随手用bash写了一个,测试了一下,发现竟然能够修改网络参数 :-)
#!/bin/sh
#echo "Content-type:text/html" #echo read temp ip=$(echo $temp |cut -d"&" -f1|cut -d"=" -f2) netmask=$(echo $temp |cut -d"&" -f2|cut -d"=" -f2) gateway=$(echo $temp |cut -d"&" -f3|cut -d"=" -f2) dns=$(echo $temp |cut -d"&" -f4|cut -d"=" -f2) #echo $ip #echo $netmask #echo $gateway #echo $dns
super ifconfig eth0 $ip netmask $netmask #super route del default #super route add default gw $gateway #echo "nameserver $dns" > /etc/resolv.conf
|
阅读(2729) | 评论(2) | 转发(0) |