Introduction
Introduction Statistics Contact Development Disclaimer Help
Title: Realtime bandwidth terminal graph visualization
Author: Solène
Date: 19 July 2019
Tags: openbsd ttyplot
Description:
If for some reasons you want to visualize your bandwidth traffic on an
interface (in or out) in a terminal with a nice graph, here is a small
script
to do so, involving **ttyplot**, a nice software making graphics in a
terminal.
The following will works on OpenBSD.
You can install ttyplot by `pkg_add ttyplot` as root, ttyplot package
appeared
since OpenBSD 6.5.
For Linux, the [ttyplot official
website](https://github.com/tenox7/ttyplot)
contains tons of examples.
### Example
Output example while updating my packages:
IN Bandwidth in KB/s
↑ 1499.2 KB/s#
│ #
│ #
│ #
│ ##
│ ##
│ 1124.4 KB/s##
│ ##
│ ##
│ ##
│ ##
│ ##
│ 749.6 KB/s ##
│ ##
│ ##
│ ##
#
│ ## # # # #
##
│ ## # ### # ## # # # ##
## # # ##
│ 374.8 KB/s ## ## #### # # ## # # ### ## ## ### #
## ### # # # # ## # ##
│ ## ### ##### ########## ############# ### # ##
### ##### #### ## ## ###### ## ##
│ ## ### ##### ########## ############# ### ####
### ##### #### ## ## ## ###### ## ###
│ ## ### ##### ########## ############## ### ####
### ##### #### ## ## ######### ## ####
│ ## ### ##### ##############################
######### ##### #### ## ## ############ ####
│ ## ###
#################################################### #### ##
#####################
│ ## ###
####################################################
#############################
└──────────────────────�
�───────────────────────�
��───────────────────────
───────────────────────�
�──────→
# last=422.0 min=1.3 max=1499.2 avg=352.8 KB/s
Fri Jul 19 08:30:25 2019
github.com/tenox7/ttyplot 1.4
In the following command, we will use **trunk0** with INBOUND traffic
as the
interface to monitor.
At the end of the article, there is a command for displaying both in
and out at
the same time, and also instructions for customizing to your need.
**Article update:** the following command is extremely long and
complicated, at
the end of the article you can find a shorter and more efficient
version,
removing most of the awk code.
You can copy/paste this command in your OpenBSD system shell, this will
produce
a graph of trunk0 inbound traffic.
{ while :; do netstat -i -b -n ; sleep 1 ; done } | awk
'BEGIN{old=-1} /^trunk0/ { if(!index($4,":") && old>=0) { print
($5-old)/1024 ; fflush ; old = $5 } if(old==-1) { old=$5 } }' |
ttyplot -t "IN Bandwidth in KB/s" -u "KB/s" -c "#"
The script will do an infinite loop doing `netstat -ibn` every second
and
sending that output to awk.
You can quit it with **Ctrl+C**.
## Explanations
Netstat output contains total bytes (in or out) since system has
started so awk
needs to remember last value and will display the difference between
two
output, avoiding first value because it would make a huge spike (aka
the total
network transfered since boot time).
If I decompose the awk script, this is a lot more readable.
Awk is very readable if you take care to format it properly as any
source code!
#!/bin/sh
{ while :;
do
netstat -i -b -n
sleep 1
done
} | awk '
BEGIN {
old=-1
}
/^trunk0/ {
if(!index($4,":") && old>=0) {
print ($5-old)/1024
fflush
old = $5
}
if(old==-1) {
old = $5
}
}' | ttyplot -t "IN Bandwidth in KB/s" -u "KB/s" -c "#"
### Customization
+ replace **trunk0** by your interface name
+ replace both instances of **$5** by **$6** for **OUT** traffic
+ replace **/1024** by **/1048576** for MB/s values
+ remove **/1024** for B/s values
+ replace 1 in **sleep 1** by another value if you want to have the
value every
n seconds
### IN/OUT version for both data on the same graph + simpler
Thanks to leot on IRC, netstat can be used in a lot more efficient way
and remove all the awk parsing!
ttyplot supports having two graphs at the same time, one being in
opposite color.
netstat -b -w 1 -I trunk0 | awk 'NR>3 { print $1/1024; print
$2/1024; fflush }' | ttyplot -2 -t "IN/OUT Bandwidth in KB/s" -u "KB/s"
-c "#"
You are viewing proxied material from dataswamp.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.