[bash] Polecenie pobierające zużycie transferu

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
daris
Sędziwy Jeż
Sędziwy Jeż
Posty: 66
Rejestracja: 26 lut 2007, 17:20
Płeć: Mężczyzna
Wersja Ubuntu: 15.04
Środowisko graficzne: KDE Plasma
Architektura: x86_64

[bash] Polecenie pobierające zużycie transferu

Post autor: daris »

Poszukuje polecenia albo programu który pokazywałby ilość zużytego transferu przez aktualnie uruchomione programy/usługi. Chodzi mi o coś takiego jak pokazuje conky, czyli np:
Download: 51 KB/s
Upload: 1 KB/s
W jaki sposób to robi conky?

edit: już nieważne - napisałem sobie skrypt który parsuje /proc/net/dev
:craz:
Awatar użytkownika
el.pescado
Zakręcona Traszka
Zakręcona Traszka
Posty: 734
Rejestracja: 26 maja 2005, 11:43
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [bash] Polecenie pobierające zużycie transferu

Post autor: el.pescado »

Podziel się w takim razie;)
Awatar użytkownika
daris
Sędziwy Jeż
Sędziwy Jeż
Posty: 66
Rejestracja: 26 lut 2007, 17:20
Płeć: Mężczyzna
Wersja Ubuntu: 15.04
Środowisko graficzne: KDE Plasma
Architektura: x86_64

Odp: [bash] Polecenie pobierające zużycie transferu

Post autor: daris »

Proszę bardzo ;)

Kod: Zaznacz cały

#!/bin/bash
max_chars=100 # maksymalna liczba znaków na konsoli (dlugosc paska wykresu)
max_down_speed=65536 # maksymalna prędkość pobierania w bajtach (tutaj 65536 B = 64 KB = 512Mb)

function get_speed()
{
	speed=`cat /proc/net/dev | grep eth0`
	if [ "$1" == 'up' ]; then
		speed=`echo $speed | awk '{print $9}'`
		last=$last_upl
		last_upl=$speed
	else
		speed=`echo $speed | awk '{print $1}' | awk -F":" '{print $2}'`
		last=$last_down
		last_down=$speed
	fi
	speed=$[ $speed - $last ]
}

function kb()
{
	bytes=$[$1 * 100 / 1024]
	val=`echo $bytes | sed 's/\([[:digit:]]*\)\([[:digit:]]\{2\}\)/\1.\2/g'`
	if [ `echo $val | wc -m` == 4 ]; then
		val="0$val"
	elif [ `echo $val | wc -m` == 3 ]; then
		val="0.$val"
	elif [ `echo $val | wc -m` == 2 ]; then
		val="0.0$val"
	fi
}

function wykres()
{
	perc=$[$1 * 100 / $max_down_speed]
	print_chars=$[$perc/ (100 / $max_chars)]
	str='['
	for s in `seq 0 $max_chars`
	do
		if [ $s -lt $print_chars ]; then
			str+='#'
		else
			str+='-'
		fi
	done
	str+=']'
}

last_upl=`cat /proc/net/dev | grep eth0 | awk '{print $9}'`
last_down=`cat /proc/net/dev | grep eth0 | awk '{print $1}' | awk -F":" '{print $2}'`
sleep 1
echo -e "\n"
i=1

while [ true ]
do
	get_speed 'up'
	kb $speed
	upl_speed=$val
	
	get_speed 'down'
	wykres $speed
	wykres=$str
	down_sum=$[$down_sum + $speed]
	kb $speed
	down_speed=$val
	
	down_avg=$[$down_sum/$i]
	kb $down_avg
	down_avg=$val
	
	echo -e "\e[2A$wykres"
	echo -e "Download: $down_speed KB/s\e[K\tUpload: $upl_speed KB/s\e[K\tDownload Avg: $down_avg KB/s"
	i=$[$i+1]
	sleep 1
done
A tak to wygląda

Kod: Zaznacz cały

darek:~/skrypty/netstat$ ./netstat
[########---------------------------------------------------------------------------------------------]
Download: 5.55 KB/s     Upload: 0.77 KB/s       Download Avg: 5.24 KB/s
:craz:
gabi
Piegowaty Guziec
Piegowaty Guziec
Posty: 7
Rejestracja: 30 sie 2006, 13:29
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: [bash] Polecenie pobierające zużycie transferu

Post autor: gabi »

Daris bardzo mile mnie zaskoczyles tym skryptem:)
Ląduje do ulubionych! THX!
Procek
Sędziwy Jeż
Sędziwy Jeż
Posty: 31
Rejestracja: 25 lut 2007, 23:30
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Brak

Odp: [bash] Polecenie pobierające zużycie transferu

Post autor: Procek »

Jest też program konsolowy bmon (bandwitch monitor).
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 4 gości