Envoi de log (syslog) via le réseau en langage C/C++
zaraki21
Messages postés31Date d'inscriptionlundi 2 juin 2008StatutMembreDernière intervention22 avril 2011
-
24 juin 2010 à 13:46
zaraki21
Messages postés31Date d'inscriptionlundi 2 juin 2008StatutMembreDernière intervention22 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.
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 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
zaraki21
Messages postés31Date d'inscriptionlundi 2 juin 2008StatutMembreDernière intervention22 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.
zaraki21
Messages postés31Date d'inscriptionlundi 2 juin 2008StatutMembreDernière intervention22 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 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
zaraki21
Messages postés31Date d'inscriptionlundi 2 juin 2008StatutMembreDernière intervention22 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.