Senden von UDP-Paketen mit dem Befehl `logger`


7

Ich habe verschiedene Lösungen zum Ausführen eines benutzerdefinierten Syslog-Servers (basierend auf https://gist.github.com/marcelom/4218010 ).

Das Problem, mit dem ich konfrontiert bin, ist, dass der folgende Befehl keine UDP-Pakete an den Server sendet:

logger -n 127.0.0.1 -P 514 "Test message"

Sende ich eine Testnachricht ordnungsgemäß?

Irgendwelche Ideen, was ich falsch mache? Die Skripte sollten anscheinend funktionieren, aber ich kann nicht bestätigen, dass sie während der Tests funktionieren.

BEARBEITEN : Ich habe bestätigt, dass der Syslog-Empfänger tatsächlich Nachrichten empfängt, die mit dem UDP-Protokoll gesendet wurden. So habe ich auch die Frage geklärt, dieses Stück zu entfernen.

Antworten:


7

Ich habe etwas Vernunft verloren, um herauszufinden, warum ich mich gestern nicht auf verschiedenen Computern anmelden konnte, um unsere Remote-Protokollierung zu testen

Es stellt sich heraus, dass das Kernpaket util-linux / bsdutils, das "logger" enthält, Version 2.20.1 installiert hat und diese Version den Schalter -n stillschweigend ignoriert. Folgendes habe ich herausgefunden:

  • Alle neueren Versionen von Logger von 2.21 bis 2.24 bauen und funktionieren einwandfrei.
  • Version 2.20.1 funktioniert einwandfrei, ignoriert jedoch den Schalter -n genau wie die installierte Version.
  • Alle Ubuntu von 12.04 bis einschließlich "vertrauenswürdig" enthalten alle 2.20.1 :(

LÖSUNG:

Holen Sie sich das neueste Util-Linux von: ftp://ftp.kernel.org/pub/linux/utils/util-linux/

Entpacken, ./konfigurieren, erstellen und kopieren Sie die Binärdatei von ./misc-utils/logger nach / usr / local / bin / logger.

Möglicherweise müssen Sie Ihre Shell wie "source ~ / .bashrc" aktualisieren, damit die Version / usr / local / bin beißt. Vergewissern Sie sich, dass der neue Logger mit "logger -V" installiert ist, wo NICHT mehr "logger from util-linux 2.20.1" stehen sollte.


3
Fehler und Problemumgehung hier: bugs.debian.org/cgi-bin/bugreport.cgi?bug=684264 Fügen Sie einfach "-u / tmp / ignore " hinzu und -n beginnt zu arbeiten.
MattiasF

6

Eine andere Lösung mit Netcat:

echo -n "test message" | nc -4u -w1 <host> <udp port>


Befehlszeilenargumente sind für BSD netcat - nicht GNU
DarkHeart
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.