Projet en C : afficher le nombre de connexion sur 12 mois

Fermé
Lerazo01 Messages postés 3 Date d'inscription lundi 2 janvier 2023 Statut Membre Dernière intervention 4 janvier 2023 - 2 janv. 2023 à 14:32
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 - 4 janv. 2023 à 23:15

Bonjour,

Tout d'abord je vous souhaites une bonne année, j'espère que vous avez eu de beaux cadeaux pour Noël.

Comme dit dans le titre, je dois faire un projet d'ici la fin du mois un programme qui permet d'afficher le nombre de connexion effectuer sur un ordinateur depuis les 12 derniers mois. Pour cela j'ai besoins d'accéder au log de l'ordinateur sauf que je ne sais comment faire. Et une fois cette tâche effectuer, comment transférer ses informations sur mon programme C ?

Je vous remercie d'avance si vous répondez à ma question


Windows / Chrome 108.0.0.0

3 réponses

xHaMaz Messages postés 108 Date d'inscription mardi 3 janvier 2023 Statut Membre Dernière intervention 23 avril 2023 14
Modifié le 3 janv. 2023 à 02:16

Bonsoir, une très belle année à toi aussi.

Pour ton problème, tu peux utiliser la bibliothèque "syslog" pour accéder aux logs de l'ordinateur et compter le nombre de connexions effectuées sur les 12 derniers mois : 

#include <syslog.h>

Ouvre les logs avec la fonction "openlog" :

openlog("mon_programme", LOG_PID | LOG_CONS, LOG_USER);

Récupére les logs avec la fonction "syslog" :

syslog(LOG_INFO, "Récupération des logs en cours...");

Ferme les logs avec la fonction "closelog" :

closelog();

Pour transférer les infos récupérées dans ton programme tu peux utiliser des variables pour les stocker et les afficher à l'écran ou les enregistrer dans un fichier, commence par déclarer les variables pour les stocker :

int nombre_connexions;
char date[32];

Ensuite celles pour les récupérer :

nombre_connexions = 10;
strcpy(date, "01/01/2022");

Pour finir affiche les infos à l'écran avec la fonction "printf" :

printf("Nombre de connexions: %d\n", nombre_connexions);
printf("Date: %s\n", date);

Tiens moi au courant

1
Lerazo01 Messages postés 3 Date d'inscription lundi 2 janvier 2023 Statut Membre Dernière intervention 4 janvier 2023
Modifié le 3 janv. 2023 à 07:32

Bonjour xHaMaz, 

Je tiens à vous remercier pour votre réponse mais j'aurais plusieurs question à poser. 

Tout d'abord le "Récupération des logs en cours..." c'est juste un message affiché le temps que la fonction fait son travail ?

Ensuite je ne comprends pas très bien à quoi sert la fonction strcpy. 

Et enfin il faut que mon programme affiche la globalité des connexions sur 1 mois, c'est à dire combien de fois je me suis connecté à mon pc du 1er janvier au 31 janvier et ça pour chaque mois de l'année et j'ai l'impression que votre fonction le fait pour une date en particulier avec le strcpy.

Je vous remercie si vous répondez encore une fois à mes questions 

0
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
Modifié le 3 janv. 2023 à 10:53

Salut Lerazo01,

L'entête syslog.h suggéré par xHaMaz est un entête qui existe sur les systèmes POSIX (Linux, BSD, ...). Si tu es sous Windows, il n'existera pas, pas plus que le serveur Syslog avec lequel openlog() ouvrirait une connexion à condition qu'il soit en fonctionnement.

De plus, la fonction syslog() ne sert pas à "récupérer" des logs, mais à passer un message de log au serveur Syslog (inscrire un log).

https://man7.org/linux/man-pages/man3/syslog.3.html

Sous Linux, les logs sont de simples fichiers textes et on les "récupère" avec un éditeur de texte, et on les filtre en général avec les outils de ligne de commande POSIX grep, sed, etc.

En admettant que tu sois sous Linux, les logs sont en général placés sous /var/log/ et dans un fichier dont le nom est déterminé, selon le service logué, par le fichier /etc/syslog.conf. Une fois le fichier identifié, tu peux aussi l'ouvrir à partir de ton programme C, avec fopen() et lire les lignes avec fgets() pour en parser le contenu ultérieurement avec strtok() par exemple.

Je ne pratique pas beaucoup Windows, mais sous ce système j'imagine que l'équivalent de Syslog serait l'observateur d’événements.

https://learn.microsoft.com/fr-fr/windows/security/threat-protection/auditing/view-the-security-event-log

Ils ont une API, apparemment : https://learn.microsoft.com/en-us/windows/win32/wes/windows-event-log qui semble permettre de faire des choses similaires aux fonctions accessibles via syslog.h sous POSIX.

Si ton travail consiste à traiter des logs, la première chose à déterminer est de quel système tu parles et de quelles connexions et à quoi.

un programme qui permet d'afficher le nombre de connexion effectuer sur un ordinateur depuis les 12 derniers mois. Pour cela j'ai besoins d'accéder au log de l'ordinateur sauf que je ne sais comment faire

n'indique pas le système, ni s'il s'agit de connexions entrantes ou sortantes, ni quel type de connexions et à quel service, etc.

0
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
3 janv. 2023 à 17:25

et si c'est la journalisation de l'ouverture de session Windows qui t'intéresse, et non pas la connexion entrante ou sortante à un service, cette information te sera sans doutes utile :

https://learn.microsoft.com/fr-fr/windows/security/threat-protection/auditing/basic-audit-logon-events

0
Lerazo01 Messages postés 3 Date d'inscription lundi 2 janvier 2023 Statut Membre Dernière intervention 4 janvier 2023
4 janv. 2023 à 21:58

Bonjour Dal, 

Alors pour le système utiliser c'est Linux Debian, j'ai oublié de le préciser dans le titre mais par contre je ne comprends pas de ce que vous voulez parler lorsque vous dites "quelles connexions".

Je dois faire un programme qui affiche depuis une certaines périodes le nombre de connexions effectuer sur un serveur web et aussi faire un pourcentage de celui-ci.

A la fin il doit ressembler à ça normalement.

0
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083 > Lerazo01 Messages postés 3 Date d'inscription lundi 2 janvier 2023 Statut Membre Dernière intervention 4 janvier 2023
4 janv. 2023 à 23:15

On avance :-)

Alors pour le système utiliser c'est Linux Debian, j'ai oublié de le préciser dans le titre

OK, donc Linux Debian.

Sais-tu quelle version de Debian est installée ?

le nombre de connexions effectuer sur un serveur web

On parle donc d'un serveur Web (tu ne fournissais pas non plus cette information...).

Tu n'as pas répondu à la question de savoir si ce sont des connexions entrantes ou sortantes au serveur et apparemment tu dis ne pas comprendre la question.

Partons de l'hypothèse que ce serveur Web est bien installé sur la machine Linux Debian à laquelle tu as accès et que tu veux donc comptabiliser les connexions entrantes sur le serveur. Ce que tu recherches, serait donc alors le nombre de requêtes reçues par le serveur générées tous les utilisateurs du site sur une période donnée.

Si oui, sais-tu quel est le serveur Web installé sur ce Linux Debian ? Est-ce Apache ou un autre ? Peux-tu accéder au contenu de /var/log/ ? Si oui, y vois-tu un répertoire apache2/ ?

Toujours dans cette hypothèse, disposes-tu dans ce répertoire de fichiers avec un nom du type "access.log" ?

Si l'hypothèse n'est pas celle que je suppose, formule ta question plus précisément stp si tu veux une réponse utile.

0