Determinar ancho de banda utilizado desde terminal

Wenas, tengo en la cabeza un script en bash pero me encuentro con el problema que no se determinar el ancho de banda de la conexion (una PPP) desde terminal.
Vamos, que me interesaria sacar desde la terminal la cantidad de kb's que se transmiten.

Hay muchos programas que te muestran la cantidad de kb's transfiridos al momento (desde gkrellm hasta superkaramba) pero desde la terminal no se si hay nada.

He mirado el man del pppd pero no saco nada claro.

La idea que tengo es un script que constantemente comprueba la cantidad de kb's transferidos. En el momento que los kb's bajan de un cierto limite durante n segundos cortaría la conexion, cerraria algo (mldonkey) y volvería a iniciar la conexion junto con el programa que quisiera (mldonkey).

Si alguien sabe de algun buen manual para controlar esto que tambien postee plz.

Enga nus vemos!
Mira el segundo post de auxiliar (el de script de perl):
http://www.elotrolado.net/showthread.php?s=&threadid=293751&highlight=script

A ver si te sirve, la información deberia andar por /proc/net/, si quieres algo a mas alto nivel ya no se que decirte

Saludos
Creo que lo que buscas es algo parecido o igual que un script que puso auxiliar hace poco: http://elotrolado.net/showthread.php?s=&threadid=293751

Si no es eso... sorry :)


EDITO: Raharu veloz... XD
Jurjur eso si que es velocidad!! [tadoramo]

El script ya lo probé en su dia aunque no me funcionó y cayó en el olvido. Acabo de ver el hilo otra vez y e visto que a Zamorate le pasaba lo mismo.

Ahora toy por CPAN a bajar los modulos y haber si me sirve el script de auxiliar.

Gracias ;-)
Ey!! Pues esto a mí me interesa, tengo un servidor "descabezado" al que solo puedo entrar por ssh y me gustaría tenerlo un poco controlado desde la consola.

Gracias!! XD

Saludos.
Por Bulma he encontrado este script tambien en perl que creo que hace lo mismo que el script de auxiliar pero este es bastante mas simple mirando el codigo.

#!/usr/bin/perl -w

# Nota: estos dos parametros puede introducirlos el usuario
# en la linea de comandos, por este orden, sobreescribiendo
# los valores por defecto para esa ejecución.

$def_int="eth0"; # interface que analizamos por defecto
$def_sca=500; # escala del grafico por defecto

# Lo que viene a continuación no deberia ser modificado
# por los usuarios normales. De todas formas yo nunca
# dejaria que me llamasen usuario normal ]:-)

$pnd="/proc/net/dev";
$int=($ARGV[0])?($ARGV[0]):($def_int);
$seg=1;
$kil=1000;
$kps=$kil*$seg;
$sca=($ARGV[1])?($ARGV[1]):($def_sca);

# Función que obtiene el numero total de bytes recibidos
# por el interface

sub getbytes
{
open (PND, "<$pnd");
while() {
if(/\s*$int:\s*(\d+)\s*/) {
return $1;
}
}
close PND;
}

# Programa principal

print "Esto analiza $pnd a intervalos de $seg segundo(s) ";
print "y para cada intervalo\n";
print "calcula la velocidad de bajada por el $int ";
print "en KiloBytes/segundo\n";

$x=&getbytes;
while(1) {
sleep $seg;
$z=($y=&getbytes)-$x;
foreach (0..$z/$sca) { print '#' }
printf("%10.5f KBps\n", $z/$kps);
$x=$y;
}


Ya sabeis: guardar como algo.pl y chmod +x.

Aparte de esto haciendo un "cat /proc/net/dev | less" como apuntaba Raharu [ok] saco los paquetes enviados y recibidos de la interfaz PPP, por lo que intentaré trabajar con esto de cara a hacer 1 script 100% bash.

Nos vemos!

EDITO: Sacando un poco de aqui y un poco de alli, mas el supertutorial de sed de auxiliar ya he sacado los bytes recibidos de /proc/net/dev [fies] .
Aqui mi pequeña paranoya:

cat /proc/net/dev | less | sed '4!d;q' | cut -b8-16


[bye]
Link2No escribió:has probado bwmon ?


Si, lo que el problema que tengo con bwmon y otros que he probado es como recoger la parte de la salida que me interesa.

En fin, ahora esto lo tengo solucionado y cuando tenga un poco de tiempo me lio con el script, y si me siento orgulloso y furula bien pos lo posteo aqui por si a alguien le interesa :cool:
quelcom escribió:cat /proc/net/dev | less | sed '4!d;q' | cut -b8-16


[bye]


Sölo vengo a fastidiar :P

less no lo necesitas para nada (se usa para paginar), y el cut seguro que se puede sustituir con algo del sed.

Otra forma de hacerlo, sin tener que empollar sed:

cat /proc/net/dev | tail -n 2 | head -n 1 | cut -b8-16
quelcom escribió:Por Bulma he encontrado este script tambien en perl que creo que hace lo mismo que el script de auxiliar pero este es bastante mas simple mirando el codigo.


Ese script está precisamente citado en el código fuente de mi script. De hecho, mi idea era mejorarlo, porque no me convencía la salida que genera.

Sacando un poco de aqui y un poco de alli, mas el supertutorial de sed de auxiliar


Hombre, por fin alguien que confiesa haberse leído mi tutorial... Habíais acabado por deprimirme.

cat /proc/net/dev | less | sed '4!d;q' |  cut -b8-16


No me convence: less no pinta nada, y la interfaz que necesitas consultar no tiene por qué estar en la cuarta línea.

Yo intentaría algo así:

awk '$0 ~ INTERFAZ {print $3}' INTERFAZ=ppp FS="[: ]+" /proc/net/dev


Por usar awk. Si quieres usar sed:

sed '/pp0:/!d;s/.*:\([0-9]\+\).*/\1/;q' /proc/net/dev


Y para calcular la velocidad, haces un sleep de unos cuantos segundos, vuelves a realizar la lectura y restas los bytes y divides.
Pos vaya, less en este caso no lo necesito, había echo varias combinaciones y a la que me salió lo que quería ya no toqué nada mas. Perreria [decaio]
Gracias Churly & auxiliar. [beer]

auxiliar escribió:Hombre, por fin alguien que confiesa haberse leído mi tutorial... Habíais acabado por deprimirme.


Seguro que habrá alguien mas, la verdad es que estos mini tutoriales siempre vienen bien tenerlos cerca. Reitero mis gracias por tu tuto [oki].

awk, awk, awk... habré de mirar su man [qmparto] , pero funciona a la perfección.

auxiliar escribió:No me convence: less no pinta nada, y la interfaz que necesitas consultar no tiene por qué estar en la cuarta línea.


Cierto si la conexion PPP no esta levantada o hay mas (en mi caso no).

Weno, mañana trasteo con todo esto. Gracias.
auxiliar escribió:Hombre, por fin alguien que confiesa haberse leído mi tutorial... Habíais acabado por deprimirme.

Que conste que yo también me lo leí, y los enlaces a otros dos tutos que ponías (creo que uno era de bulma), aunque hace tiempo que lo hice y ya lo tengo olvidadete, pero lo tengo en mi carpeta Documents para echarle otro vistazo cuando pueda. ;)

Un saludo.
auxiliar escribió:Hombre, por fin alguien que confiesa haberse leído mi tutorial... Habíais acabado por deprimirme.


El tuto de Sed no aparece en el de escufi de enlaces rápidos del foro ,yo creo que debería entrar de cabeza... (una excusilla para que no te halla dicho mucha gente nada , yo de momento lo tengo entre los 2/3 apuntes sobre gnu/linux a la vista :D )

Salu2
auxiliar escribió:Hombre, por fin alguien que confiesa haberse leído mi tutorial... Habíais acabado por deprimirme.


Que conste que yo también le he echado un ojo (creo recordar haberte dado las gracias, sino te las doy ahora :)), lo que pasa es que aún no he tenido tiempo a meterme con él...
14 respuestas