Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
commande débit !
Envoyé par: walidux

salut à tous,
y'a t il une commande linux qui permet l'affichage du débit de transfert de donnée actuel sur mon PC (par exemple je suis en cour de telecharger open office ==> le debit de transfert est 420 Ko/s)
et merci d'avance

Poste le Monday 21 April 2008 23:01:56
Répondre     Citer    
Re: commande débit !

bmon, ifstat, ntop
...
(?)

Poste le Tuesday 22 April 2008 00:52:12
Répondre     Citer    
Re: commande débit !
Envoyé par: walidux

Merci pour votre réponse.
Le probleme est je ne trouve pas le débit de téléchargement actuel sur mon pc. Si vous avez d'autres solutions ou plus de détaille, n'hésiter pas de les poster.
Et merci d'avance ;-)

Poste le Tuesday 22 April 2008 19:53:18
Répondre     Citer    
Re: commande débit !

bmon fait ça très bien. Que lui reproches-tu?

Poste le Wednesday 23 April 2008 02:45:55
Répondre     Citer    
Re: commande débit !

Et ifstat aussi

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Wednesday 23 April 2008 08:10:57
Répondre     Citer    
Re: commande débit !
Envoyé par: walidux

Bonjour tous le monde,

Oui et bien compris, mais le problème et que je suis à la recherche d'une commande qui me retourne directement le taux de transfert : par exemple 123 Ko/s pour le download et 96 Ko/s pour l'upload, car je suis en cours de développer une application en java sous linux, ou j'exécute directement des commandes et je récupère directement le résultat. (sans entrer dans les détailles des commande)

Pour être plus clair :
- Lorsque j'exécute la première commande de taux de transfert de download je reçois en résultat dans le console : 123 Ko/s
- Lorsque j'exécute la deuxième commande de taux de transfert d'upload je reçois en résultat dans le console : 96 Ko/s

NB: Je n'est aucun souci si la commande contient des tubes : par exemple "Commande | grep ... | cut ..."


J'ai vraiment besoin de votre aide et de cette commande "???", et merci d'avance

Poste le Saturday 6 September 2008 00:00:32
Répondre     Citer    
Re: commande débit !

Depuis un programme le plus simple serait plutôt de lire (periodiquement) des fichiers sous /proc/net ou /sys
comme /proc/net/dev /proc/net/if_inet6

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Saturday 6 September 2008 08:58:09
Répondre     Citer    
Re: commande débit !
Envoyé par: walidux

Je pense qu'il est vrai que la meilleur solution est de lire périodiquement d'un fichier, c'est à dire executer une commande de type : grep ... chemin "vers le fichier" | cut ...

Mais lorsque j'affiche le contenu des fichiers par la commande cat, voila ce que j'obtient :

- commande : cat /proc/net/if_inet6
00000000000000000000000000000001 01 80 10 80 lo
fe8000000000000002a0d1fffe4b3461 02 40 20 80 eth0

- commande : cat /proc/net/dev_snmp6/eth0
ifIndex 1
Icmp6InMsgs 0
Icmp6InErrors 0
Icmp6InDestUnreachs 0
Icmp6InPktTooBigs 0
Icmp6InTimeExcds 0
Icmp6InParmProblems 0
Icmp6InEchos 0
Icmp6InEchoReplies 0
Icmp6InGroupMembQueries 0
Icmp6InGroupMembResponses 0
Icmp6InGroupMembReductions 0
Icmp6InRouterSolicits 0
Icmp6InRouterAdvertisements 0
Icmp6InNeighborSolicits 0
Icmp6InNeighborAdvertisements 0
Icmp6InRedirects 0
Icmp6OutMsgs 0
Icmp6OutDestUnreachs 0
Icmp6OutPktTooBigs 0
Icmp6OutTimeExcds 0
Icmp6OutParmProblems 0
Icmp6OutEchoReplies 0
Icmp6OutRouterSolicits 0
Icmp6OutNeighborSolicits 0
Icmp6OutNeighborAdvertisements 0
Icmp6OutRedirects 0
Icmp6OutGroupMembResponses 0
Icmp6OutGroupMembReductions 0

==> Pas d'information concernant le taux de transfert !!!! ?-(

SVP aider moi, j'ai vraiment besoin de cette astuce pour mon programme ...

Poste le Saturday 6 September 2008 13:30:01
Répondre     Citer    
Re: commande débit !

Ça se trouve sous /sys/class/net/eth*/statistics/*x_bytes, qui donnent le nombre total d'octets transmis/reçus depuis le démarrage de la machine...
?

Poste le Saturday 6 September 2008 14:25:25
Répondre     Citer    
Re: commande débit !

Mais les mêmes données sont accessibles par `ifconfig`...

Poste le Saturday 6 September 2008 14:36:30
Répondre     Citer    
Re: commande débit !
Envoyé par: walidux

Citation
Иван
Ça se trouve sous
/sys/class/net/eth*/statistics/*x_bytes, qui
donnent le nombre total d'octets transmis/reçus
depuis le démarrage de la machine...
?

Ahhhh Noooooo :,(

à bien lire ce que je veux !!! Le nombre total d'octets transmis/reçus depuis le démarrage de la machine... peut etre lu par la commande 'ifconfig'

J'aime bien avoir le taux de transfert de download et d'upload à ce moment !

Et merci pour vos réponse

Poste le Saturday 6 September 2008 14:52:12
Répondre     Citer    
Re: commande débit !

pour les downloads, wget -v
pour les uploads, ftp -v

?

Poste le Saturday 6 September 2008 15:22:39
Répondre     Citer    
Re: commande débit !

Depuis un programme, on peut lire les volumes (kiloctets) échangés chaque 5 secondes, puis calculer le débit.

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Saturday 6 September 2008 15:53:36
Répondre     Citer    
Re: commande débit !
Envoyé par: AlSim

[nopcode.org]
mesure -i eth0 -Kt

[catwell.info]

Poste le Saturday 6 September 2008 18:27:05
Répondre     Citer    
Re: commande débit !
Envoyé par: walidux

Merci tous pour vos réponses ;-)

J'ai adapté à la fin la premiere solution, qui s'agit d'exécuter ce script là, qui calcule la différence entre la taille de transfert dans /proc/net/dev :

Remarque : J'ai remarqué que le taux de transfert n'ai pas exactement le meme que celui de l'assistant de téléchargement (par exemple le taux de téléchargement est 210 Ko/s dans l'assistant de téléchargement et 130 Ko/s dans mon application qui utilise ce script !!!!)

Si vous avez d'autres script plus précis, veuillez les poser ici.

Et merci d'avance :-)

#!/bin/bash

#Permet d'afficher le débit réseau courant.
#Utilisé par mk_prompt pour l'afficher dans l'invite de commande.

IF=eth0
INIF=eth0

DATA_FILE=/tmp/debit.data
time_stamp1=`cat $DATA_FILE | gawk '{print $1}'`
received1=`cat $DATA_FILE | gawk '{print $2}'`
transmitted1=`cat $DATA_FILE | gawk '{print $3}'`

received2=`cat /proc/net/dev | grep $IF | sed "s/:/ /" | gawk '{print $2}'`
transmitted2=`cat /proc/net/dev | grep $IF | sed "s/:/ /" | gawk '{print $10}'`

time_stamp2=`date "+%s"`

diff_time=`echo " $time_stamp2 - $time_stamp1" | bc`
if [ $diff_time = 0 ]
then
diff_time=1
fi


debit_r=`echo " (( $received2 - $received1 ) / $diff_time ) / 1024 " | bc -l | cut -c 1-4`
debit_t=`echo " (( $transmitted2 - $transmitted1 ) / $diff_time ) / 1024 " | bc -l | cut -c 1-4`

DATA_FILE2=/tmp/debit2.data
time_stamp3=`cat $DATA_FILE2 | gawk '{print $1}'`
received3=`cat $DATA_FILE2 | gawk '{print $2}'`
transmitted3=`cat $DATA_FILE2 | gawk '{print $3}'`
received4=`cat /proc/net/dev | grep $INIF | sed "s/:/ /" | gawk '{print $2}'`
transmitted4=`cat /proc/net/dev | grep $INIF | sed "s/:/ /" | gawk '{print $10}'`
time_stamp4=`date "+%s"`
diff_time2=`echo " $time_stamp4 - $time_stamp3" | bc`
if [ $diff_time2 = 0 ]
then
diff_time2=1
fi
debit_r2=`echo " (( $received4 - $received3 ) / $diff_time2 ) / 1024 " | bc -l | cut -c 1-4`
debit_t2=`echo " (( $transmitted4 - $transmitted3 ) / $diff_time2 ) / 1024 " | bc -l | cut -c 1-4`
echo "i=${IF} R=${debit_r} T=${debit_t}"
echo "$time_stamp2 $received2 $transmitted2" > $DATA_FILE
echo "i=${INIF} R=${debit_r2} T=${debit_t2}"
echo "$time_stamp4 $received4 $transmitted4" > $DATA_FILE2

Poste le Sunday 7 September 2008 17:15:10
Répondre     Citer    
Re: commande débit !

Bonsoir Walidux,

Pourquoi deux variables IF et INIF pour eth0 ? Je suppose que INIF=eth1...
? Si c'est le cas, une boucle t'éviterait d'entrer les mêmes commandes...

Tant pour awk, que pour grep, il n'est pas nécessaire d'utiliser `cat`, cela s'appelle un UUOC (Useless Use Of Cat).

`Awk` peut (et doit) faire beaucoup plus que simplement afficher un champ (par exemple, remplacer grep et sed, ou effectuer les calculs des 'debit_*'), préfère `cut`.


Par contre, je ne connais pas cette construction,
Citation
walidux
echo "i=${IF} R=${debit_r} T=${debit_t}"
tu veux bien m'expliquer...
?
on dirait une substitution qui ne substitue rien...

Merci pour /proc/net/dev, je ne connaissais pas.

Poste le Sunday 7 September 2008 19:23:35
Répondre     Citer    
Re: commande débit !

#!/bin/bash

dataFile="/proc/net/dev"
statFile="/tmp/statFile"

diff_tmStp=$(echo "$(date +%s.%N) - $(cut -d" " -f1 $statFile)" | bc)
 while read line; do
  Com=( $line )
  ComEt=( tmStp=$(date +%s.%N) $(awk 'BEGIN { var="eth*" } { if (match($1,var)) print "Rx="substr($1,6), "Tx="$9}' $dataFile) )
  a="0"
  while [[ "$a" -lt "${#Com[*]}" ]]; do
Col=$(echo ${ComEt[$a]} | cut -d"=" -f1)
   case $Col in
    tmStp) echo "depuis : $(echo "$(echo ${ComEt[$a]} | cut -d"=" -f2) - ${Com[$a]}" | bc) secondes"
    ;;
    *x) [ $diff_tmStp = 0 ] && diff_tmStp="1"
    RxTx=$(echo "((($(echo ${ComEt[$a]} | cut -d"=" -f2 | sed 's/ .x//') - ${Com[$a]}) / $diff_tmStp) / 1024)" | bc)
    [ $Col = Rx ] && echo "$RxTx Ko/s_reçus"
    [ $Col = Tx ] && echo "$RxTx Ko/s_envoyés"
    ;;
   esac
   let "a += 1"
  done
 done < $statFile
echo -ne "$(date +%s.%N) $(awk 'BEGIN { var="eth*" } { if (match($1,var)) print substr($1,6) , $9}' $dataFile)\\n " > $statFile

mais j'ai également un écart entre le résultat de ce script et la valeur indiquée par wget...
?

Poste le Wednesday 10 September 2008 06:41:13
Répondre     Citer    
Re: commande débit !

Bonjour,

Le format de /proc/net/dev :
temps -1
eth0: 9999999
temps 0
eth0:10000000

m'incite à penser qu'il vaut mieux ne pas utiliser ses données.

J'en reviens donc aux /sys/class/net/eth*/statistics/*x_bytes, avec toujours un écart entre les résultats du script et les stats retournées par wget...
?

Poste le Friday 12 September 2008 07:09:26
Répondre     Citer    
Re: commande débit !
Envoyé par: walidux

Salut &#1048;&#1074;&#1072;&#1085;,

Il est vrai qu'il y a une différence entre les résultats de ce script et de celle de wget ou l'assistant de firefox !!

Pour ta question :
"tu veux bien m'expliquer...
?
on dirait une substitution qui ne substitue rien... "


J'ai cherché pas mal dans l'internet d'une commande standard qui me renvoie le résultat de taux d'upload et de download mais sans aucun effet sad smiley

et j'ai trouvé également le script que j'ai posé dans cette discussion, donc j'était obligé de l'utiliser dans mon programme (que j'ai développé), sans bien comprendre son principe de fonctionnement, sachant que lorsque je supprime l'un des variable IF=eth0 ou INIF=eth0, le script ne demeure plus fonctionnel !

Poste le Thursday 18 September 2008 18:14:01
Répondre     Citer    
Re: commande débit !

Pour ce qui concerne la différence entre le script et les stats retournées par les outils de téléchargements, je suppose un problème de chronométrage :
le script prend en compte l'heure de lancement de la commande de téléchargement (s'il yen a une) et celle de son achèvement , et non la durée réelle du téléchargement...
?

Quant à l'utilisation de /proc/net/dev, je persiste à penser que ce n'est pas une bonne idée. Ce fichier étant une "concaténation" de valeurs se trouvant (liées) sous /sys/class/net/*/stastictics/*.

Ne vaut-il pas mieux "s'adresser au bon dieu, plutôt qu'à ses saints"...

Poste le Friday 19 September 2008 11:59:28
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
commande débit !
Un problème avec une commande du shell ? Comment utiliser la crontab ? Vous avez des soucis pour la gestion réseau sous Linux ? Pour vous la gestion des utilisateurs/groupes est du chinois ? Etc... Posez donc vos questions ici.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons