Ping in Datei umleiten

Hinweis: In dem Thema Ping in Datei umleiten gibt es 4 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Hallo,

    der Titel hört sich ja zunächst ganz einfach an. ping >> Dateiname und gut. Ja, dachte ich auch. Jedoch bei näherem hinsehen...

    Mein Ziel ist es einige Zeit die Laufzeiten zu dokumentieren, meine Schwester beschwert sich immer wieder über sporadisch schlechten Empfang via Glasfaser.

    DG hält sich natürlich bedeckt.


    Code
    ping -D5 google.de

    gibt mit das:

    Code
    [1706968449.476364] 64 Bytes von fra24s08-in-f3.1e100.net (142.250.186.163): icmp_seq=1 ttl=117 Zeit=7.84 ms
    [1706968454.480811] 64 Bytes von fra24s08-in-f3.1e100.net (142.250.186.163): icmp_seq=2 ttl=117 Zeit=10.2 ms

    Damit Datum und Zeit lesbar sind habe ich nach Internetrecherche den Befehl so erweitert

    Code
    ping -Di 5 google.de | awk '{if(gsub(/\[|\]/, "", $1)) {$1= strftime("[%F %T]", $1); print} else print }'

    das Ergebnis sieht so aus

    Code
    [2024-02-03 14:55:56] 64 Bytes von fra24s08-in-f3.1e100.net (142.250.186.163): icmp_seq=1 ttl=117 Zeit=8.64 ms
    [2024-02-03 14:56:01] 64 Bytes von fra24s08-in-f3.1e100.net (142.250.186.163): icmp_seq=2 ttl=117 Zeit=9.07 ms

    nah wunderbar jetzt das ganze in eine Datei umleiten...

    Code
    ping -Di 5 google.de | awk '{if(gsub(/\[|\]/, "", $1)) {$1= strftime("[%F %T]", $1); print} else print }' >> erg_ping.txt
    ping -Di 5 google.de | awk '{if(gsub(/\[|\]/, "", $1)) {$1= strftime("[%F %T]", $1); print} else print }' | tee -a erg_ping.txt

    leider, und das ist mein Problem bleibt in beiden Fällen die Datei leer!

    Hat jemand da draußen einen Tipp wie ich das lösen kann?

    MfG
    Switi vom Bienwald
    openSuse Tumbleweed slowrool
    PostgreSQL 15

    Für den Inhalt des Beitrages 311424 haftet ausdrücklich der jeweilige Autor: heidieswi

  • ... eigentlich ist das hier ein openSUSE-Forum, aber bei mir funktioniert dein Kommando:

    Code
    ping -Di 5 google.de | awk '{if(gsub(/\[|\]/, "", $1)) {$1= strftime("[%F %T]", $1); print} else print }' >> erg_ping.txt

    ... Du musst nur ein wenig warten, bis dein System den Buffer gefüllt hat und dann den Inhalt in die Datei schreibt. ;)

    Für den Inhalt des Beitrages 311430 haftet ausdrücklich der jeweilige Autor: luigi

  • Du musst nur ein wenig warten, bis dein System den Buffer gefüllt hat und dann den Inhalt in die Datei schreibt.

    Genau so ist es ... so schnell schießen die Preußen nicht ....

  • Guten Morgen,

    die Sache mit dem Puffer war mir so nicht bekannt - dachte immer Linux und besonders openSuse wären schnelle Systeme ;).

    Es dauerte so ca. 5 Min bis tail angeschlagen hat.

    Wie auch immer, wieder was gelernt.


    Vielen Dank für die Hinweise.

    MfG
    Switi vom Bienwald
    openSuse Tumbleweed slowrool
    PostgreSQL 15

    Für den Inhalt des Beitrages 311483 haftet ausdrücklich der jeweilige Autor: heidieswi

  • Wo wir schon gerade beim Lernen sind: Linux ist schnell, weil das System nicht für jeden event anhält, sonder z.B. write-Ausgaben in einem Buffer sammelt, bevor dann alles auf einen Rutsch geschrieben wird. Die Buffer-Größe von 4K bzw. von 64k kann man ändern.


    Oder einfach den Buffer flushen, z.B. mit

    Code
    ping -Di 5 google.de | awk '{if(gsub(/\[|\]/, "", $1)) {$1= strftime("[%F %T]", $1); print} else print; fflush(stdin)}' >> erg_ping.txt

    Und bedenke, dass nur alle 5s ein ping erfolgt.

    3 Mal editiert, zuletzt von luigi ()

    Für den Inhalt des Beitrages 311489 haftet ausdrücklich der jeweilige Autor: luigi