Programmation de la commande who en C
Bonjour,
je dois reprogrammer la commande who et je rencontre diverse probleme notamment, au niveau de la compatibilte linux(unbuntu 9.04)/unix(pc-bsd). Mais aussi des problemes
d affichage.
Probleme d affichage ubuntu
pour pouvoir recoder la fonction je parcours les fichiers utmp et wtmp(voir man).
je dois afficher le nom du user(ut_user), le nom du peripherique tty, la date et l adresse ip. mais pour l ip j arrive pas l afficher car de type int32 quel format puis-je tiliser pour l affichage?
il m est interdit d utilise atime, ctime ou tout autre fonction dans le genre pr l affichage, j ai pensee a ecrire une fonction pour ca, mais en regardant le man utmp j ai la structure struct ut_tv pour m aider mais je sais pas comment m y prendre.
je vous montre deja le code de ma fonction qui n affiche seulement que le ut_user et le ut_line(tty);
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
|
int who(char *file)
{
struct utmp *ut;
int nb_read;
int fd;
int i;
fd = open(file, O_RDONLY);
if (fd == -1)
{
my_putstr("error opening file\n");
exit (-1);
}
i = 0;
while((nb_read = read(fd, ut, sizeof(*ut))) > 0)
{
printf("%s %s\n", ut->ut_name, ut->ut_line);
}
}
int main(char ac, char **av)
{
who("/var/run/utmp");
return(0);
} |
A l execution j ai:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
reboot ~
runlevel ~
LOGIN tty5
LOGIN tty4
LOGIN tty2
LOGIN tty3
LOGIN tty6
LOGIN tty1
serialp tty7
serialp pts/0 |
au lieu de
Code:
1 2 3
|
serialp tty7 2009-06-17 18:08 (:0)
serialp pts/0 2009-06-17 20:27 (:0.0) |
comment parcourir mon fichier et recuperer que les utilsateur connecter comme le fait la commande who. sous pc-bsd par exple les parties LOGIN sont remplaces par un grand espace vide ensuite suivent les utlisateurs connectes avant et/ou apres les esapces.
vos conseils, commentaires et suggestions seront les biensvenu.
desole d avoir ete long mais je ne suis qu un simple debutant.
PS: je n ai pas tellement aborde la question de pc-bsd mais il suivra peut etre apres resolution de ce pobleme mais elle debatera plus au niveau de la compatibilte systeme.
Bien a vous :)