Pipe tail et wall

Résolu
Bonjour à tous!

Je n'arrive pas à faire un pipe correct d'un tail -f sur une commande wall pour l'afficher en broadcast :

tail -f /var/log/auth.log | grep --line-buffered -v disconnected | grep --line-buffered -v pam | grep --line-buffered -v su |  wall


La commande wall ne recoit apparement rien dans stdin...

Pour ceux qu'ils auront compris, c'est pour afficher en broadcast toutes les authentifications au server.

Quelqu'un aurait une idée?

Merci!

7 réponses

  1. Contributeur
    hello
    ces commandes produisent bien un message ?
    tail -f /var/log/auth.log | grep --line-buffered -v disconnected | grep --line-buffered -v pam | grep --line-buffered -v su 

    essayer sans --line-buffered
    1. Hello,

      Oui j'ai déjà essayé ta commande pour vérifier si les pipes fonctionnaient bien :
      Je vois bien la sortie de tail comme ca mais ca ne fonctionne pas quand je rajoute le wall.

      echo "test" | wall 

      Me retourne bien le broadcast...

      J'ai essayé sans les --line-buffered mais c'est surement pire car sans cet arg, le premier grep met en mémoire tampon et les suivants ne recoivent rien.

      wall attends peut être la fin de la commande tail pour broadcaster....?
      Du coup j'ai tenté un pipe intermédaire (....) | xargs echo | wall
      Mais non!
      1. pourtant les grep fonctionnent... mais eux n'attendent peut être pas le fin de tail.

        une idée pour contourné? une option de tail? un équivalent, une astuce?
        1. Contributeur
          essayer
          defaut, un message par ligne
          tail -f /var/log/auth.log | egrep --line-buffered -v "disconnected|pam|su" | while read l; do echo $l | wall ;done
      2. Ca fonctionne!

        Juste une dernière modif :

        nohup tail -f /var/log/auth.log | egrep --line-buffered -v "disconnected|pam|su|closed" | while read l; do echo $l | wall -n ;done &


        Et voila, je mettrai dans /etc/rc.local .
        Je vais faire de meme pour /var/log/message pour broadcaster les logs d'iptables

        Merci beacoup! A++!
        1. Curieux,

          la commande :

          nohup tail -f /var/log/auth.log | egrep --line-buffered -v "disconnected|pam|su|closed" | while read l; do echo $l | wall -n ;done > /dev/null &


          Fonctionne bien en ligne de commande, mais dans le rc.local, après redémarrage. rien :'(

          Je vais essayer de trouver
          1. Problème résolu, il y avait une commande qui ne fonctionnait pas dans mon rc.local et qui terminait le script!