Chinaunix首页 | 论坛 | 博客
  • 博客访问: 324812
  • 博文数量: 106
  • 博客积分: 3081
  • 博客等级: 中校
  • 技术积分: 1090
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-15 14:07
文章分类

全部博文(106)

文章存档

2009年(1)

2007年(34)

2006年(71)

我的朋友

分类: C/C++

2006-10-14 23:48:31

自己写了个子程序.用来关闭linux的网络服务.就是对/etc/servies文件的操作.
 
 
运行如下:
./程序名 open[close] 服务名
 
 
#include
enum{open,close};
char* yi_wei(char *server_save,int flag)
{
int i;
char *r_w,*p;
r_w=(char *)malloc(100* sizeof(char));
if(flag==1)
{
*(r_w)='#';
for(i=0;*(server_save+i)!='\0'&&*(server_save+i)!='\n';i++)
*(r_w+i+1)=*(server_save+i);
*(r_w+i+1)='\n';
*(r_w+i+2)='\0';

}
else
{

 for(i=0;*(server_save+i)!='\0'&&*(server_save+i)!='\n';i++)
 {
 if( *(server_save+i+1)=='\0')break;
 *(r_w+i)=*(server_save+i+1);
 *(r_w+i+1)='\0';
 }
 
}

memset(server_save,' ',100);
strcpy(server_save,r_w);
free(r_w);
return server_save;
}
void off(int argc,char *argv[],char *server_save,FILE *tmp_s)
{

     char *p,*f_s;
     int i=0,count=0;
 
      for(;*(argv[2]+i)!='\0';i++ )
 {
 if( *(argv[2]+i)==*(server_save+i)  )
 count++;
 }
 if(i==count)
 {
  f_s=yi_wei(server_save,1);
  
  int i=0;
  i=0;
  while( *(server_save+i)!='\0')
  {
  fputc(*(server_save+i),tmp_s);
  i++;
  }
 }
 else
 {
  
  int b=0;
  while( *(server_save+b)!='\0')
  {
  fputc(*(server_save+b),tmp_s);
  b++;
  }
 }
}
 
void on(int argc,char *argv[],char *server_save,FILE *tmp_s)
{

      char *p,*f_s;
      int i=0,count=0;
 
      for(;*(argv[2]+i)!='\0';i++ )
 {
 if( (*(argv[2]+i)==*(server_save+i+1) )&& *(server_save)=='#')
 count++;
 }
 if(i==count)
 {
  
  f_s=yi_wei(server_save,0);
  int i=0;
  i=0;
  while( *(server_save+i)!='\0')
  {
  fputc(*(server_save+i),tmp_s);
  i++;
  }
  
 }
 else
 {
  int b=0;
  while( *(server_save+b)!='\0')
  {
  fputc(*(server_save+b),tmp_s);
  b++;
  }
 }
}
 
int main(int argc, char *argv[])
{
 char server_save[100];
 char *server_name="/etc/services";
 char *tmp_name="/etc/tmp_linux";
 int server_state;
 FILE *server_file,*tmp_s;
 int i;
 if(argc<3)
 {
 printf("usage: the wrong argument open/close+servername\n");
 exit(0);
 }
 if((server_file=fopen(server_name,"r+"))==NULL)
 {
  perror("can't not open server process");
  exit(0);
 }
 if((tmp_s=fopen(tmp_name,"w+"))==NULL)
 {
  perror("can't not open server process");
  exit(0);
 }
 fseek(server_file,0,SEEK_SET);
 if( strcmp("open",argv[1])==0)
 {
 server_state=open;
 }
 else if
 ( strcmp("close",argv[1])==0)
 {
 server_state=close;
 }
 else
 {
 printf("usage : it's not open or close\n");
 exit(0);
 }
  
 while(( fgets(server_save,100,server_file) ))
 {
 if(server_state==open)
 on(argc,argv,server_save,tmp_s);
  if(server_state==close)
 off(argc,argv,server_save,tmp_s);
 memset(server_save,' ',100);
  }
 if(unlink("/etc/services")<0)
 {
  perror("unlink failure");
  exit(0);
 }
 if( chdir("/etc")<0)
 {
 perror("can't chdir");
 exit(0);
 }
 
 if(rename("/etc/tmp_linux","/etc/services")<0)
 {
  perror("rename failure");
  exit(0);
 }
  printf("\n\n\n\n\nmy Master linuxcici, it's done <(A_A)>\n      THXY Colleg NetWork 042\n\n\n\n");
 fclose(server_file); 
 fclose(tmp_s);
}
阅读(1061) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~