 
    
-  mexendo com fopen
 
 
 
		
			
	+ Responder ao Tópico
	
	
	
	
	
	
		
			
- 
	
	
		
		
			
				
				
				
					 mexendo com fopen mexendo com fopen
					
						
							Estou com uma duvida..eu digito um comando da bash e jogo esse comando em uma string como descrito abaixo:
 
 sprintf(str,"%s","cat /etc/passwd | grep :0:0: | tac | cut -d':' -f1");
 
 passwd = popen(str,"r");
 
 printf("Usuario(s) encontrado(s) com id 0 (root):\n");
 
 rewind(passwd);
 
 passwd = popen(str,"r");
 
 while((ch=fgetc(passwd))>0)
 {
 if(ch!='\n' && ch!='\r'){
 sprintf(str2,"%s%c",str2,ch);
 }
 else{
 printf("%s",str2);
 sprintf(str2,"%c",ch);
 }
 }
 printf("\n");
 pclose(passwd);
 }
 certo??
 eu gostaria de pegar o q estah sendo em str2 e jogar em uma outra string q ja eh inicializada com "userdel "
 char user[256]="userdel ";
 
 estou tendo problemas com isso..nao estou conseguindo..sempre q joga os caracteres da string em user..da um problema de kebra de linha..quando ele avança para o seguindo usuario.
 por exemplo tenho 2 usuarios com id 0
 knoppix e root
 ele faz a seguinte coisa:
 userdel knoppixluserdel
 root
 
 como soluciono isso??
 faloow
 []'s
 ateh++
 
 
 
 
 
 
 
- 
	
	
		
		
			
				
				
				
					 id-root-check id-root-check
					
						
							aaee pessoal ja arrumei..achei uma solucao hehe!! mas de qualquer forma valeu.
 kem kiser testar o id-check..eu vou postar logo abaixo..ateh agora eu nao achei nenhuma falha. caso alguem ache..por favor poste aki ok???
 
 keria agradercer principalmente o SDM e o kakaroto q esclareceram minhas duvidas e td ..me deram uma força e me ajudaram bastante e o pessoal tb q postou aqui no forum e que me ajudou..blza?? valeu galera..
 
 OBS: eu testei aki e foi tranquilo caso alguem keira testar fike a vontade soh por prevencao faz uma copia do passwd hehe falooow []'s
 
 #include <stdio.h>
 #include <unistd.h>
 #include <sys/types.h>
 #include <string.h>
 
 int
 main(int argc, char *argv[])
 {
 FILE *passwd;
 char str[51],*str2=(char *)malloc(256),user[256];
 int x=0,ch;
 
 if(argc < 2){
 printf("Erro de sintaxe\n");
 printf("Verefica help para mais informacoes: id-check -h\n");
 exit(1);
 }
 
 if(setuid(0)!=0)
 {
 printf("\nVc nao eh root. Nao tem permissao para executar o arquivo\n");
 exit(1);
 }
 
 if(!(strcmp(argv[1],"-h")))
 {
 printf("-l                  listar usuarios com ID 0\n");
 printf("-d                  deletar usuarios com ID 0\n");
 printf("Use:  ./id-check [opcao]\n");
 }
 
 
 else if(!strcmp(argv[1],"-l"))
 {
 
 sprintf(str,"%s","cat /etc/passwd | grep :0:0: | tac | cut -d':' -f1");
 
 passwd = popen(str,"r");
 
 printf("Usuario(s) encontrado(s) com id 0 (root):\n");
 
 rewind(passwd);
 
 while((ch=fgetc(passwd))>0)
 {
 if(ch!='\n' && ch!='\r'){
 sprintf(str2,"%s%c",str2,ch);
 }
 else{
 printf("%s",str2);
 sprintf(str2,"%c",ch);
 }
 }
 printf("\n");
 pclose(passwd);
 }
 
 else if(!strcmp(argv[1],"-d")){
 
 printf("O usuario root nao serah deletado. OK?\n");
 
 sprintf(str,"%s","cat /etc/passwd | grep :0:0: | tac | cut -d':' -f1");
 
 passwd = popen(str,"r");
 
 rewind(passwd);
 
 while((ch=getc(passwd))!=EOF)
 {
 if(ch!='\n' && ch!='\r'){
 sprintf(str2,"%s%c",str2,ch);
 }
 else{
 if(strcmp(str2,"root")){
 sprintf(user,"%s%s%c","userdel ",str2,ch);
 system(user);
 strcpy(str2,"\0");
 }
 }
 }
 pclose(passwd);
 }
 
 else printf("Erro de sintaxe\n");
 
 return 0;
 
 }