Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5699928
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类:

2007-01-23 16:22:49

这两天一直用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

阅读(2649) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~