conversion de KiB/s a KB/s (bash script)

Iniciado por xkiz ™, 4 Enero 2012, 19:21 PM

0 Miembros y 1 Visitante están viendo este tema.

xkiz ™

hola gente.
anteriormente en mi pc tenia Windows y para medir el transito de internet utiizaba el NetSeedMonitor, , hace poco instale ubuntu en mi pc, y busque una aplicacion para cumplir el mismo fin, encontre el indicator-sysmonitor que entre otras cosas sirve para monitorear el transito de internet, el problema es que para medir el transito de internet hay que usar un script:
Código (bash) [Seleccionar]

#!/bin/bash

#settings:
netspeed=true
ram=true
cpu=true
#-------------------------------------------------------


#---------------- initialize ---------------------------
rm /tmp/.sysmon > /dev/null 2>&1
dstat --net --mem --cpu --output=/tmp/.sysmon 1 1 > /dev/null 2>&1

#----------- up/down speed -----------------------------
if [ $netspeed = true ]; then

upspeed=$(echo $(cat /tmp/.sysmon | tail -1 | cut -d ',' -f2)/1024 | bc)

upkbmb=$(if [ $upspeed -gt 1024 ]; then
up1=$(echo $(cat /tmp/.sysmon | tail -1 | cut -d ',' -f2)/1024/1024 | bc -l)
echo $up1 | head -c 4
else
echo $upspeed | head -c 3
fi)

downspeed=$(echo $(cat /tmp/.sysmon | tail -1 | cut -d ',' -f1)/1024 | bc)

downkbmb=$(if [ $downspeed -gt 1024 ]; then
down1=$(echo $(cat /tmp/.sysmon | tail -1 | cut -d ',' -f1)/1024/1024 | bc -l)
echo $down1 | head -c 4
else
echo $downspeed | head -c 3
fi)
#---------------- up/down speed unit --------------------
upunit=$(if [ $upspeed -gt 1024 ]; then echo "MiB/s"; else echo "KiB/s"; fi)
downunit=$(if [ $downspeed -gt 1024 ]; then echo "MiB/s"; else echo "KiB/s"; fi)

fi



#------------------- CPU % used -------------------------
if [ $cpu = true ]; then

cpufree=$(cat /tmp/.sysmon | tail -1 | cut -d ',' -f9)
cpuused=$(echo 100-$cpufree | bc | sed -e 's/\..*//')

fi



#------------------- RAM % used --------------------------
if [ $ram = true ]; then

memused=$(free -m | grep buffers/cache | tr -s ' ' | cut -d' ' -f 3)
memfree=$(free -m | grep buffers/cache | tr -s ' ' | cut -d' ' -f 4)
memtotal=$(echo $memused+$memfree | bc -l)

memusedpercent=$(echo 100-100*$memfree/$memtotal | bc)

fi


#------------------ The Indicator Sysmonitor actual output -
echo $(if [ $ram = true ]; then echo Mem: $memusedpercent% \|; fi) $(if [ $cpu = true ]; then echo CPU: $cpuused% \|; fi) $(if [ $netspeed = true ]; then echo ↑ $upkbmb $upunit  ↓ $downkbmb $downunit; fi)


El tema es que expresa los valores en KiB/s y lo quiero pasar a KB/s, estuve buscando por internet y la verdad es que no me sale la matematica para pasarlo a KB/s.

BlackZeroX

#1
Es una simple regla de tres siguiendo esta presima:

1024 KB/s = 1000 KiB/s

por lo tanto 512 KiB/s a KB/s es:

512 KiB/s * 1024 KB/s / 1000 KiB/s = 524.288 KB/s
Reduciendo:
512 KiB/s * 1.024 KB/KiB = 524.288 KB/s

en resumen:

KiB/s multiplica por 1.024 KB/KiB para pasarlo a KB/s

Dulces Lunas!¡.
The Dark Shadow is my passion.