Ping + Timestamp > Datei - Wie geht das?

Moin,

ich möchte zu diagnostischen Zwecken (mein unfähiger Provider braucht das wohl) über einen längeren Zeitraum ping in eine Datei schreiben lassen. Um das entsprechend auswerten zu können, soll da aber n Zeitstempel an den Anfang jeder Zeile. Wie mach ich das?

Dank & Gruß,

Doc.

ich möchte zu diagnostischen Zwecken (mein unfähiger Provider
braucht das wohl) über einen längeren Zeitraum ping in eine
Datei schreiben lassen. Um das entsprechend auswerten zu
können, soll da aber n Zeitstempel an den Anfang jeder Zeile.
Wie mach ich das?

man logger

echo „date“

SYNOPSIS
 logger [-46Ais] [-f file] [-h host] [-p pri] [-t tag] [message ...]

DESCRIPTION
 The logger utility provides a shell command interface to the syslog(3)
 system log module.

 The following options are available:

 -f file
 Log the specified file.

Heisst das, daß ich hier das file angeben kann, in das geloggt wird?

 -t tag Mark every line in the log with the specified tag.

Kann ich als tag „echo „date““ angeben?
Und wo geb ich das „ping www.host.tld“ an?

Sorry, aber mit Logging hab ich mich in dieser Form noch nicht beschäftigt. Die Software, die ich so benutze, bringt ihre eigenen Log-Mechanismen mit. Ein paar Sätze dazu wären hilfreich.

Danke,

Doc.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

man logger

echo „date“

SYNOPSIS
logger [-46Ais] [-f file] [-h host] [-p pri] [-t tag]
[message …]

DESCRIPTION
The logger utility provides a shell command interface to
the syslog(3)
system log module.

The following options are available:

-f file
Log the specified file.

Heisst das, daß ich hier das file angeben kann, in das geloggt
wird?

Urm… das habe ich so nicht gemacht. Und es scheint so auch nicht zu funkionieren. Bei mir geht sowas in die /var/log/allmessages…

-t tag Mark every line in the log with the specified
tag.

Kann ich als tag „echo „date““ angeben?

 logger -t ping-statistik $(date)

Und wo geb ich das „ping www.host.tld“ an?

Sorry, aber mit Logging hab ich mich in dieser Form noch nicht
beschäftigt. Die Software, die ich so benutze, bringt ihre
eigenen Log-Mechanismen mit. Ein paar Sätze dazu wären
hilfreich.

echo $(date) $(ping -c 3 www.heise.de | grep min\/avg\/max) \>\> /tmp/pinglog

ich möchte zu diagnostischen Zwecken (mein unfähiger Provider
braucht das wohl) über einen längeren Zeitraum ping in eine
Datei schreiben lassen. Um das entsprechend auswerten zu
können, soll da aber n Zeitstempel an den Anfang jeder Zeile.
Wie mach ich das?

#!/bin/sh
ping $1 | awk ’
{
threshold = 1
match($0,„time=[0-9.]+“)
roundtrip=substr($0,RSTART+5,RLENGTH-5)
if (int(roundtrip) > threshold) {
„date“ | getline timestamp
close(„date“)
print timestamp " " roundtrip
}
}’

threshold ist die schwelle, ab der gelogt werden soll, wenn der roundtrip darueber liegt. falls immer, dann threshold=0.
zieladdresse in argv[1]; ausgabe nach stdout…

gute nacht,

joachim

**less /tmp/pinglog**
Don Feb 27 00:08:27 CET 2003 round-trip min/avg/max = 2353.390/2805.795/3123.843 ms
Don Feb 27 00:08:50 CET 2003 round-trip min/avg/max = 160.186/552.969/1289.240 ms
Don Feb 27 00:08:54 CET 2003 round-trip min/avg/max = 152.610/399.377/880.220 ms

Urm… das habe ich so nicht gemacht. Und es scheint so auch
nicht zu funkionieren. Bei mir geht sowas in die
/var/log/allmessages…

hier kaeme dann die -p pinglog.info option ins spiel, zusammen mit einem eintrag in /etc/syslog.conf so in der folgenden form:

pinglog.* /var/log/pinglog

joachim, der wegen so ner kleinigkeit doch nicht den syslogd belaestigen wuerde :wink:

echo $(date) $(ping -c 3 www.heise.de | grep min\/avg\/max)
\>\> /tmp/pinglog

Das verstehe ich. Danke.

Gruß,

Doc.

joachim, der wegen so ner kleinigkeit doch nicht den syslogd
belaestigen wuerde :wink:

Eben. „multilog“ regelt…

#!/bin/sh
ping $1 | awk ’
{
threshold = 1
match($0,„time=[0-9.]+“)
roundtrip=substr($0,RSTART+5,RLENGTH-5)
if (int(roundtrip) > threshold) {
„date“ | getline timestamp
close(„date“)
print timestamp " " roundtrip
}
}’

threshold ist die schwelle, ab der gelogt werden soll,
wenn der roundtrip darueber liegt. falls immer, dann threshold=0.

Das verstehe ich.

zieladdresse in argv[1];

Das verstehe ich nicht. Was ist argv[1] und wo definiere ich das?

ausgabe nach stdout…

Hier bin ich weider dabei.

Danke soweit!

Gruß,

Doc.

joachim, der wegen so ner kleinigkeit doch nicht den syslogd
belaestigen wuerde :wink:

Eben. „multilog“ regelt…

ach was - awk rules…

joachim

zieladdresse in argv[1];

Das verstehe ich nicht. Was ist argv[1] und wo definiere ich
das?

ok, zu viel c in letzter zeit…

argv[] ist das array, das in c die kommandozeilenargumente enthaelt. argv[1] ist also das erste.

der aufruf ist dann also:

$ nohup /path/to/pingtool www.heise.de >/var/log/pinglog &

joachim

ps: wenn dein ping so haessliche antworten wie

joachim, der wegen so ner kleinigkeit doch nicht den syslogd
belaestigen wuerde :wink:

Eben. „multilog“ regelt…

ach was - awk rules…

Hm. Ja.

Da habe ich mich - ehrtlich gesagt - noch nicht herangetraut…

Sebastian

#!/bin/sh

[…]

zieladdresse in argv[1];

Das verstehe ich nicht. Was ist argv[1] und wo definiere ich
das?

Das ist das erste dem Script übergebene Argument.

also

pinglog **www.wer-weiss-was.de**

Sebastian

zieladdresse in argv[1];

Das verstehe ich nicht. Was ist argv[1] und wo definiere ich
das?

Erledigt, danke :smile:

Gruß,

Doc.

ach was - awk rules…

Hm. Ja.

Da habe ich mich - ehrtlich gesagt - noch nicht herangetraut…

nicht wirklich schwer, wenn man nen bisschen c kann. und eben quasi ueberall vorhanden (im gegensatz zu perl) und immer fuer nen schnellen einzeiler gut.

joachim, der auch schon hunderte von zeilen in awk skripten musste, weil’s auf der kiste partout kein perl geben durfte. beim naechsten release war ich dann nicht mehr dabei und ploetzlich gab’s perl - ergo, man muss nur laut und lang genug schreien…

ps: wenn dein ping so haessliche antworten wie

ps: wenn dein ping so haessliche antworten wie

ach was - awk rules…

nicht wirklich schwer, wenn man nen bisschen c kann.

… und damit starte ich leider voraussetzungslos. Vielleicht gibt es ja ein gutes Tutorial - meine paar sedIsmen habe ich mit einem IBM-Tutorial erlernt. Nicht, daß ich es besonders weit gebracht hätte, aber mglw. haben die auch sowas für awk…

joachim, der auch schon hunderte von zeilen in awk skripten
musste, weil’s auf der kiste partout kein perl geben durfte.
beim naechsten release war ich dann nicht mehr dabei und
ploetzlich gab’s perl - ergo, man muss nur laut und lang genug
schreien…

Jaja und der nächts Schreihals setzt das dann auf VBS um… ;-}

Sebastian

Danke für Dein Script - es macht genau das, was ich will.

bitte, immer gern. diesmal war es auch nur ein griff in die
skriptbox, so nen problem hat man oefter mal, und wenn die
netzwerker dann wieder verkuenden, dass das netz keine
probleme hat, dann muessen daten sprechen…

Ja. Da fällt mir ein, daß ich auf Arbeit auch mal ein wenig Benchmarken wollte.

Mal sehen, wie ich das umbaue, daß es mit ‚ab‘ läuft. Ping ist schonmal gut.

Hm…