Projet en C : afficher le nombre de connexion sur 12 mois
Fermé[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 4 janv. 2023 à 23:15
- Projet en C : afficher le nombre de connexion sur 12 mois
- Gantt projet - Télécharger - Gestion de projets
- Musique projet x ✓ - Forum Musique / Radio / Clip
- Projet vba exemple ✓ - Forum VB / VBA
- Musique du film Projet X - Forum Musique / Radio / Clip
- Musique de " Projet X " - Forum Musique / Radio / Clip
3 réponses
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
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
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.
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.
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 :
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.
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.