[Gelöst]2 Terminal- Ausgaben in einer Zeile zusammenfassen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
thunder11
Beiträge: 1357
Registriert: 19.04.2023 09:08:30

[Gelöst]2 Terminal- Ausgaben in einer Zeile zusammenfassen

Beitrag von thunder11 » 08.09.2023 14:19:54

Mal wieder was leichtes für die Profis (aber nicht für mich)
Inspiriert durch diesen Thread: viewtopic.php?t=187778,
hatte ich mir überlegt wie @ GregorS dort, die Daten von Debianvnstat erstmal zu sammeln.
die Ausgabe von vnstat -tr 60 eno1 sieht dann so aus:

Code: Alles auswählen

~$ vnstat -tr 60  eno1
258 packets sampled in 60 seconds
Traffic average for eno1

      rx         6,33 kbit/s             2 packets/s
      tx         1,25 kbit/s             1 packets/s
Dies kann man dann in eine Textdatei packen. Würde aber gerne noch die Uhrzeit dazu haben.
dafür mein Mini Skript:

Code: Alles auswählen

#!/bin/bash
while true
do
   vnstat -tr 60 eno1|grep rx|cut -c 10-28 >>vnstattr
   date +"%a-%H:%M:%S">>vnsratr
   sleep 1
done
In der Ausgabe wird dann zuerst die Übertragungsrate und einen Zeile darunter die Uhrzeit eingetragen.
Also so:

Code: Alles auswählen

      678,87 kbit/s
Fr-13:43:01
      711,47 kbit/s
Fr-13:44:02
      440,21 kbit/s
Fr-13:45:03
      725,19 kbit/s
Fr-13:46:04
      710,97 kbit/s
Fr-13:47:05
      429,84 kbit/s
Fr-13:48:06
      860,78 kbit/s
Fr-13:49:07
      436,85 kbit/s
Fr-13:50:08
      694,63 kbit/s
Fr-13:51:09
      441,34 kbit/s
Fr-13:52:10
      707,60 kbit/s
Fr-13:53:11
Habt ihr einen Idee, wie man das in einer Zeile (vor oder nach) hinbekommt ?
Zuletzt geändert von thunder11 am 08.09.2023 14:56:13, insgesamt 1-mal geändert.

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: 2 Terminal- Ausgaben in einer Zeile zusammenfassen

Beitrag von tobo » 08.09.2023 14:31:17

Man könnte sich aus den moreutils (ts = TimeStamp) bedienen:

Code: Alles auswählen

#!/bin/bash
while true
do
   vnstat -tr 60 eno1|grep rx|cut -c 10-28 | ts >>vnstattr
   sleep 1
done
Und ts kann man natürlich mit Optionen anpassen.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: 2 Terminal- Ausgaben in einer Zeile zusammenfassen

Beitrag von heisenberg » 08.09.2023 14:33:04

Code: Alles auswählen

echo "$(date +"%a-%H:%M:%S")  $(vnstat -tr 60 -i eno1|grep rx|cut -c 10-28)" >>vnstattr
bzw.

Code: Alles auswählen

echo "$(date +"%a-%H:%M:%S")  $(vnstat -tr 60 -i eno1|awk '/rx/ {print $2,$3}')" >>vnstattr
Bei mir braucht vnstat ein -i.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
thunder11
Beiträge: 1357
Registriert: 19.04.2023 09:08:30

Re: 2 Terminal- Ausgaben in einer Zeile zusammenfassen

Beitrag von thunder11 » 08.09.2023 14:53:41

Super und danke an Beide :hail:
Den Befehl "ts" kannte ich noch nicht- werde mit mal die Optionen anschauen.
Statt "ts" mit date mit Parametern hatte ich versucht, gab aber immer bloß das Datum
Mit echo funktioniert es genauso gut
Wieder was gelernt. Thema erledigt :THX:

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: [Gelöst]2 Terminal- Ausgaben in einer Zeile zusammenfassen

Beitrag von tobo » 08.09.2023 15:03:55

Die Optionen gehören zu `date' und hast du schon selbst angegeben:

Code: Alles auswählen

| ts "%a-%T" >>file

Benutzeravatar
thunder11
Beiträge: 1357
Registriert: 19.04.2023 09:08:30

Re: [Gelöst]2 Terminal- Ausgaben in einer Zeile zusammenfassen

Beitrag von thunder11 » 08.09.2023 15:32:57

tobo hat geschrieben: ↑ zum Beitrag ↑
08.09.2023 15:03:55
ie Optionen gehören zu `date' und hast du schon selbst angegeben:
Ja - Hatte ich schon geschnallt.
Habe "geschüttelt und gerüttelt" Mein Favorit z.Z.:

Code: Alles auswählen

#!/bin/bash
while true
do
   vnstat -tr 30 eno1|awk '/rx/ {print $2,$3}'|ts %a-%H:%M:%S::>>testvanstat
#  vnstat -tr 60 eno1|grep rx|cut -c 10-28 >>vnstattr
#  date +"%a-%H:%M:%S">>vnstattr
   sleep 1
done
Die zwei Doppelpunkte hinter dem ts %a-%H:%M:%S resultieren daraus, dass ich keinen Zwischenraum zwischen den Ausgaben hinbekommen habe.
Ausgabe z.Z.

Code: Alles auswählen

Fr-15:17:51 2,18 Mbit/s
Fr-15:20:33 982,09 kbit/s
Fr-15:21:34 421,06 kbit/s
Fr-15:22:31:: 696,40 kbit/s
Fr-15:23:02:: 702,49 kbit/s
Fr-15:23:33:: 682,87 kbit/s
Fr-15:24:04:: 698,07 kbit/s
Fr-15:24:35:: 144,29 kbit/s
Fr-15:25:07:: 712,62 kbit/s
Fr-15:25:38:: 3,20 Mbit/s
Fr-15:26:09:: 816,00 kbit/s
Fr-15:26:40:: 699,05 kbit/s
Fr-15:27:11:: 690,96 kbit/s
Fr-15:27:42:: 693,38 kbit/s
Fr-15:28:13:: 830,61 kbit/s
Fr-15:28:44:: 457,32 kbit/s
Fr-15:29:15:: 2,59 kbit/s
Fr-15:29:46:: 1,39 kbit/s
Fr-15:30:17:: 1,21 kbit/s
Fr-15:30:48:: 935 bit/s
Fr-15:31:19:: 2,80 kbit/s
Fr-15:31:50:: 763 bit/s

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: [Gelöst]2 Terminal- Ausgaben in einer Zeile zusammenfassen

Beitrag von tobo » 08.09.2023 15:59:31

thunder11 hat geschrieben: ↑ zum Beitrag ↑
08.09.2023 15:32:57
Die zwei Doppelpunkte hinter dem ts %a-%H:%M:%S resultieren daraus, dass ich keinen Zwischenraum zwischen den Ausgaben hinbekommen habe.
Wie ist das?

Code: Alles auswählen

vnstat -tr 30 eno1 | grep -Po "rx\s*\K\d+,\d+ kbit/s" | ts "%a-%T" >> testvanstat
EDIT: Ne, du meinst wohl was anderes, da sich zum awk ja nichts ändert. Nach den :: (und auch ohne) ist doch ein Leerzeichen vorhanden.

Code: Alles auswählen

$ echo a | ts "%a-%T"
Fri-17:59:54 a
$
Zuletzt geändert von tobo am 08.09.2023 18:00:31, insgesamt 1-mal geändert.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: [Gelöst]2 Terminal- Ausgaben in einer Zeile zusammenfassen

Beitrag von heisenberg » 08.09.2023 16:10:21

Wenn Du Leerzeichen möchtest:

statt ...

Code: Alles auswählen

vnstat -tr 30 eno1|awk '/rx/ {print $2,$3}'|ts %a-%H:%M:%S::>>testvanstat
so ...

Code: Alles auswählen

vnstat -tr 30 eno1|awk '/rx/ {print $2,$3}'|ts "%a-%H:%M:%S     ">>testvanstat
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Antworten