Comment écrire un script qui fonctionne uniquement avec de nouvelles entrées de journal
Je pense que ça devrait être simple, mais c'est difficile pour moi de le comprendre.
J'essaie d'écrire un script qui suivra l'un des fichiers journaux apache et prendre certaines actions. Mais comment devrais-je suivre le fichier journal?
Chaque fois qu'une nouvelle ligne est écrite dans le journal, je souhaite que cette entrée soit vérifiée pour voir s'il correspond au fait que je cherche, et si oui, alors arrive. x. Quand je le fais manuellement, j'ai utilisé cat ou tail -f. Je ne veux pas courir le script tous les 30 Secondes à travers cron et parcourir tout le magazine (ou même le dernier 5 Rangée), Pour savoir laquelle de ces lignes est nouvelle depuis le dernier script de démarrage, puis certaines choses.
Y a-t-il un moyen de ne vérifier qu'un nouveau disque dans le journal?
J'essaie d'écrire un script qui suivra l'un des fichiers journaux apache et prendre certaines actions. Mais comment devrais-je suivre le fichier journal?
Chaque fois qu'une nouvelle ligne est écrite dans le journal, je souhaite que cette entrée soit vérifiée pour voir s'il correspond au fait que je cherche, et si oui, alors arrive. x. Quand je le fais manuellement, j'ai utilisé cat ou tail -f. Je ne veux pas courir le script tous les 30 Secondes à travers cron et parcourir tout le magazine (ou même le dernier 5 Rangée), Pour savoir laquelle de ces lignes est nouvelle depuis le dernier script de démarrage, puis certaines choses.
Y a-t-il un moyen de ne vérifier qu'un nouveau disque dans le journal?
Aucun résultat connexe trouvé
Invité:
Pour répondre aux questions, connectez-vous ou registre
8 réponses
Christine
Confirmation de:
,
, et
. D'abord créer un canal nommé (fifo), Utilisant:
Deuxièmement, créez un script simple qui lira dans ce fichier. fifo. Voici un exemple simple:
Ce script lit à partir d'un canal nommé et affiche une chaîne à une sortie standard jusqu'à ce que le mot "EXIT" ne soit pas reçu. Ceci est juste un exemple qui peut être configuré.
Troisièmement, utilisez
Pour lire de nouvelles lignes ajoutées au fichier journal apache, et redirige la sortie sur le canal nommé.
DANS
option signifie suivre le fichier nommé, que devrait le rendre immunisé pour logrotate. Ainsi, il suivra toujours le même nom de fichier. DANS
signifie ne pas avoir une ancienne chaîne. DANS
Il est utile d'envoyer uniquement les lignes correspondantes.
Utilisation de cette solution, vous n'aurez besoin d'aucune tâche cron. Il suffit d'exécuter le script et la commande ci-dessus. tail.
Dominique
Confirmation de:
ou
http://linux.die.net/man/8/logtail2
La lecture du fichier évitera de lire tout le fichier chaque minute. Logtail Des pistes où il a lu la dernière lecture et procède à ce point dans la prochaine utilisation.
Si vous voulez travailler avec de nouvelles lignes du magazine immédiatement, n'attendez pas 59 Secondes entre les appels cron, Vous devrez utiliser
ou similaire.
Les deux réponses Janne et Halad résolvent bien ce problème.
Christine
Confirmation de:
(Probablement
aussi approprié) comme syslog-daemon, Tu peux l'utiliser.
Il suffit de la configurer pour suivre le fichier journal. Apache, ou, comme alternative, configurez Apache Envoyer des magazines à l'outil syslog par
Directive I.
.
Puis Syslog-daemon utilisera un exemple de mappage et effectuera $ foo, Si une coïncidence est trouvée. Par exemple, dans syslog-ng Vous pouvez configurer l'interception du fichier journal et le filtrer comme suit:
Puis syslog-ng Provoque un script externe
Enfin, rassemblez tout cela ensemble:
Si vous utilisez cette technique, syslog-ng Créez le fond de votre script, en attente de l'apparition d'un nouveau matériau. Pour cette raison, vous devez modifier vos scénarios pour vous attendre à l'entrée de STDIN; Voici un petit exemple Perl:
Je ne vais pas approfondir dans ma réponse avant de savoir ce que vous voulez essayer cette technique.
Alice
Confirmation de:
Mais gardez à l'esprit que le fichier journal peut être tourné. Donc, vous devez enregistrer, tels que des chiffres inode.
http://www.fail2ban.org/wiki/index.php/Main_Page
Surveille les fichiers journaux comme vous le pensez. Peut jeter un coup d'oeil à ça? Vous pouvez emprunter des idées ou les utiliser.
Catherine
Confirmation de:
Faites la différence entre le fichier journal en direct et le fichier temporaire.
Exécuter le mappage d'échantillon pour le fichier reçu diff.
L'idée est prise du plugin nagios check_log. Voir
http://www.kilala.nl/Sysadmin/index.php?id=715
Plus de détails.
Blanche
Confirmation de:
http://pastebin.com/8hxSmTCE
Qui a écrit Marcus J. Ranum:
"Ce petit utilitaire effectue l'analogue" tail -f », Mais suffisamment intelligemment pour traiter le changement de fichiers, si le Rotateur de magazine déplace le fichier sous l'utilisateur pendant le fonctionnement. De plus, contrairement à " tail -f »Ce programme suffit à sortir lorsque l'utilisateur sort du système (!), et ne va pas éruption de magazines sur pty pour toujours et à jamais. Aucun effort n'est attaché pour l'élégance ou la performance ".
Vous pouvez modifier pour vérifier si une nouvelle chaîne correspond au modèle souhaité et agissez en conséquence.
Christine
Confirmation de:
https://github.com/bgreenlee/pygtail
C'est basé sur
de
outil
Giselle
Confirmation de: