Envoi de log (syslog) via le réseau en langage C/C++

zaraki21 Messages postés 31 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 22 avril 2011 - 24 juin 2010 à 13:46
zaraki21 Messages postés 31 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 22 avril 2011 - 22 avril 2011 à 13:03
Bonjour,

je travaille actuellement sur le développement d'une application en C/C++ sur un dispositif embarqué(noyau Linux avec Busybox).
Cette application doit permettre de gérer les logs du dispositif(utilisation de la librairie syslog.h) et offrir la possibilité de les transférer à un hôte sous Linux ou Windows via une adresse IP. Le problème que je rencontre se trouve au niveau de la transmission des logs par le réseau. J'ai réussi par exemple à envoyer un fichier log par le réseau en utilisant les sockets mais le problème c'est que par exemple, pour l’hôte fonctionnant sous windows, je dois impérativement utiliser le logiciel Kiwi Syslog Server et dans ce cas là, je dois directement envoyer les messages log via le réseau pour qu'ils soient traités par le logiciel. Es ce quelqu'un connaît une manière de le faire avec des commandes en langage C ou une autre méthode ?
Merci d'avance pour vos réponses.

9 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
24 juin 2010 à 23:19
Il n'y a pas que Kiwi qui permet de le faire : Syslog Server le permet aussi et il est open source. Mais je ne comprends pas pourquoi tu n'y arrives pas : la fonction syslog() ne te convient-elle pas ?

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
zaraki21 Messages postés 31 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 22 avril 2011
25 juin 2010 à 08:41
En fait j'ai pas le choix pour le serveur Syslog, je suis en stage et on m'impose l'utilisation de Kiwi. Après pour ce qui est de la fonction syslog(), elle fonctionne, j'arrive à enregistrer les messages dans un fichier mais le truc, c'est que je voudrais savoir si c'est possible, au lieu d' enregistrer les messages dans un fichier dans le système, directement envoyer les messages logs à travers le réseau et les récupérer via Kiwi.
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
25 juin 2010 à 11:17
Oui, c'est possible. Il te suffit d'utiliser un socket en respectant la RFC3164.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
zaraki21 Messages postés 31 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 22 avril 2011
2 juil. 2010 à 12:38
En fait j'ai trouve le moyen de le faire via une commande interne de Busybox "syslog -R adresseIP:port" qui permet de rediriger les messages de log sur une machine distante avec l'adresse IP. Mon programme C/C++ utilise les fonctions syslog et j’exécute cette commande interne via "execl" et je récupère les logs sur le serveur Kiwi Syslog Server.
Par contre, j'ai essayé de le faire avec une machine sous Linux ; j'utilise pour ce faire une machine virtuelle sous Ubuntu (avec syslogd). Par contre dans ce cas ça ne fonctionne pas, je n'arrive pas à récupérer les messages log envoyés. J'ai configuré le fichier syslog.conf avec une ligne du genre "local1.* /home/documents/log" en testant avec des messages de logs de facility "local1" mais ça ne marche pas. Je pense qu'il faut configurer le serveur syslog sur Ubuntu mais je ne vois pas comment. J'ai vu aussi dans le man que pour que syslog accepte de recevoir des messages d'une machine distante, on doit le lancer avec le paramètre -r mais je ne vois pas comment le lancer avec ce paramètre étant donné que c'est un démon.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
2 juil. 2010 à 20:19
Tu dois modifier ça dans le script qui lance le démon. Il y a probablement une variable contenant les paramètres pour éviter de devoir modifier le script lui-même.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
zaraki21 Messages postés 31 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 22 avril 2011
6 juil. 2010 à 12:03
Merci pour l'information, en effet il y a une variable de configuration à modifier.
Maintenant j'ai un autre probleme : J'ai configuré ma machine virtuelle Ubuntu pour qu'elle puisse écouter les messages Syslog venant du réseau mais quand je lance mon programme C++ sur le dispositif embarqué, les messages Syslog sont bien envoyés via le réseau (j'ai pu observé les messages sur la machine virtuelle Ubuntu via Wireshark) mais ils ne sont pas récupérés dans les fichiers log du système. A mon avis c'est un probleme de droits sur les fichiers mais je sais pas comment contourner cela pour tester donc si tu as une idée.
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
6 juil. 2010 à 20:32
Ce n'est vraiment pas mon domaine de prédilection, malheureusement ...

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
la3geb Messages postés 1 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 21 avril 2011
21 avril 2011 à 12:29
bonjour
quelqu'un peux m'aider svp ou je peux trouver le code source de kiwi syslog?
merci bien
0
zaraki21 Messages postés 31 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 22 avril 2011
22 avril 2011 à 13:03
Tu veux faire quoi au juste avec le code de kiwi syslog ?
0
Rejoignez-nous