Récupérer des champs d'un fichier
Bonjour
Je veux concevoir un petit prog qui me permetterai de lancer ma connexion, le nom d'utilisateur et le mot de passe se trouvent dans le fichier /etc/ppp/chap-secrets.
Le fichier a la syntaxe:
"nom_d'utilisateur" * "mot_de_passe" *
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
pLogin=gtk_entry_new();
pPass=gtk_entry_new();
gtk_entry_set_visibility(GTK_ENTRY(pPass),FALSE);
gtk_entry_set_max_length(GTK_ENTRY(pLogin),25);
gtk_entry_set_max_length(GTK_ENTRY(pPass),25);
char tempo1[150];
char tmplogin[25], tmplogin1[25];
char tmppass[25], tmppass1[25];
FILE *fd;
system("gawk -F \\\" 'NR==1 {print $2}' /etc/ppp/peers/ueagle-atm>/tmp/login.tmp"); //je récupère le login
fd = fopen ("/tmp/login.tmp","r");
if (fd != NULL)
{
fgets(tmplogin,25,fd);
fclose(fd);
strncpy(tmplogin1,tmplogin,strlen(tmplogin)-1);
sprintf(tempo1,"%s","cat /etc/ppp/chap-secrets|grep "); //le fichier peut contenir plusieurs login, donc je localise le login que je cherche.
strcat(tempo1,tmplogin1);
strcat(tempo1,"|gawk -F \\* '{print $2}'|gawk -F \\\" ' {print $2}'>/tmp/pass.tmp"); //je récupère le mot de passe correspondant
system(tempo1);
fd=fopen("/tmp/pass.tmp","r");
if (fd != NULL)
{
fgets(tmppass,25,fd);
fclose(fd);
strncpy(tmppass1,tmppass,strlen(tmppass)-1);
gtk_entry_set_text(GTK_ENTRY(pLogin),tmplogin1);
gtk_entry_set_text(GTK_ENTRY(pPass),tmppass1);
}
} |
Le problème est que je n'arrive pas à récupérer le mot de passe, pourtant le fichier temporaire /tmp/pass.tmp contient bel et bien le mot de passe, parfois j'ai même droit à un seg fault.
PS: Le plus bizarre c'est que le prog marchait parfaitement sous FC5 (malheureusement je me souviens plus de quelle version de gtk j'utilisais), mais depuis que je suis passé à FC7 ça ne marche plus idem sous gentoo
Merci