- 论坛徽章:
- 0
|
shell与mysql,iptables的编写问题
我用C遍了个显示数据库记录的代码,如下
- #include </usr/local/mysql/include/mysql/mysql.h>
- #include <stdio.h>
- #include <string.h>
- main(){
- MYSQL *conn;
- MYSQL_RES *result;
- MYSQL_ROW row;
- char query[200];
- char query1[200];
- char opip[200];
-
- if((conn = mysql_init(NULL))==NULL){
- fprintf(stderr,"mysql_init() error:%s\n",mysql_error(conn));
- exit(1);
- }
-
- if(mysql_real_connect(conn,"127.0.0.1","root","","web_db",0
- ,NULL,0)==NULL){
- fprintf(stderr,"mysql_real_connect()
- error:%s\n",mysql_error(conn));
- exit(1);
- }
- sprintf(query,"select * from ipinfo");
-
- if( mysql_query(conn,query)!=0|| !(result =
- mysql_store_result(conn)) ){
- fprintf(stderr,"query error\n");
- return -1;
- }
-
- while((row = mysql_fetch_row(result))!=NULL)
- {
- //printf("%s %s\n",row[0],row[1]);
- if(row[1]==0)
- { sprintf(opip,"/sbin/iptables -I INPUT -s %s -j
- DROP",row[0]);
- system(opip);
- sprintf(query1,"delete from ipinfo where
- ipaddr='%s'",row[0]);
- mysql_query(conn,query1);
- }
- else
- { sprintf(opip,"/sbin/iptables -I INPUT -s %s -j
- ACCEPT",row[0]);
- system(opip);
- sprintf(query1,"delete from ipinfo where
- ipaddr='%s'",row[0]);
- mysql_query(conn,query1);
- }
- }
- mysql_free_result(result);
- mysql_close(conn);
- }
复制代码
printf("%s %s\n",row[0],row[1])的一个结果是
我没有加上无限循环的查询,这样会使我的CUP达到100%以上
并且这个程序还有点问题,就在 if(row[1]==0)这个对flag的判断上
我本来的意思是想用SHELL写个和它一样的功能,能给PHP网页调用它
听说PHP网页可以把它的变量post给sh,但sh要执行sbin里面的命令可能也要root的吧,让我头疼啊!
我的环境是RH8,在做个防火墙记费系统,扫描数据库的方法是个笨方法啊!因为老师要求编程实现,不好用别的软件了。
红袖姐姐,大家帮帮想想啊,拜托了! |
|