自己写了个子程序.用来关闭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) |