Ispeed - Medidor de velocidade de download

Publicado por Tiago Weber 23/06/2009

[ Hits: 13.827 ]

Download ispeed




Este script mede a velocidade de download na internet baseado no cálculo da média de velocidade
de download enquanto o wget baixa um grande arquivo de um servidor.

O arquivo que o script tentará baixar pode ser alterado pelo usuário através da edição da variável
"link". Após a medição, o script exibe uma tabela de referência mostrando aproximadente quanto
tempo o usuário levaria para baixar alguns tipos de arquivos.

  



Esconder código-fonte

#! /bin/bash
# -----------------------------------------------------------------------
# Script: Internet Speed (Ispeed)
# Author: Tiago Oliveira Weber
# E-mail: towalker@gmail.com                 
# 
# Description: This script measures the internet download speed based on
# the download speed mean of wget while downloading a big file from a 
# server. 
# The file the script is going to try to download can be changed by the 
# user in the "link" variable.
# -----------------------------------------------------------------------

# Define links
link=ftp://ftp.slackware-brasil.com.br/slackware-12.0-iso/slackware-12.0-install-d1.iso

# Start to download a file
wget -O /tmp/tempfile -o /tmp/ispeed.log -b $link;
echo -e "\n Wait a few seconds while your internet is being measured"
# Reads values from the log
sleep 10
awk '$5 ~ ".........." {print $8}' /tmp/ispeed.log > /tmp/ispeed2.log
tail -10 /tmp/ispeed2.log > /tmp/ispeed3.log
cut -f 1 -d "K" -s /tmp/ispeed3.log > /tmp/ispeed4.log 

# Put values into variables
count=1; 
while read line; do
   eval var$count=$line
       count=`expr $count + 1`;
done   < /tmp/ispeed4.log; 

# Round values

vare1=`echo $var1|awk '{print int($1+0.5)}'`
vare2=`echo $var2|awk '{print int($1+0.5)}'`
vare3=`echo $var3|awk '{print int($1+0.5)}'`
vare4=`echo $var4|awk '{print int($1+0.5)}'`
vare5=`echo $var5|awk '{print int($1+0.5)}'`
vare6=`echo $var6|awk '{print int($1+0.5)}'`
vare7=`echo $var7|awk '{print int($1+0.5)}'`
vare8=`echo $var8|awk '{print int($1+0.5)}'`
vare9=`echo $var9|awk '{print int($1+0.5)}'`
vare10=`echo $var10|awk '{print int($1+0.5)}'`


# calculate the mean
eval sum=`expr $vare1 + $vare2 + $vare3 + $vare4 + $vare5 + $vare6 + $vare7 + $vare8 + $vare9 + $vare10`;

eval mean_kbytes=`expr $sum / 10`;
eval mean_kbits=`expr $mean_kbytes \* 8`;


# Display Results
clear
echo    "                     Measurement Results                       "
echo -e "_______________________________________________________________"
echo -e " Download Speed is: $mean_kbytes Kbytes/s or $mean_kbits Kbits/s \n \n";

# Comparisons
mp3_size_kbytes=5000
videoclip_size_kbytes=35000
movie_size_kbytes=800000
cdrom_size_kbytes=737000
dvd_size_kbytes=4700000

eval time_mp3_min=`expr $mp3_size_kbytes / $mean_kbytes / 60`
eval time_videoclip_min=`expr $videoclip_size_kbytes / $mean_kbytes / 60`
eval time_movie_min=`expr $movie_size_kbytes / $mean_kbytes / 60`
eval time_cdrom_min=`expr $cdrom_size_kbytes / $mean_kbytes / 60`
eval time_dvd_min=`expr $dvd_size_kbytes / $mean_kbytes / 60`

# Display Comparisons

echo -e "                Reference Download Time Table                     "
echo -e "_______________________________________________________________"
echo -e "  Type \t \t Size (Kbytes) \t \t Time (minutes)"
echo -e "  Music (mp3) \t $mp3_size_kbytes \t \t \t $time_mp3_min"
echo -e "  Videoclip \t $videoclip_size_kbytes \t \t \t $time_videoclip_min"
echo -e "  Movie \t $movie_size_kbytes \t \t $time_movie_min"
echo -e "  Cd-Rom \t $cdrom_size_kbytes \t \t $time_cdrom_min"
echo -e "  DVD \t \t $dvd_size_kbytes \t \t $time_dvd_min" 

# Finish the temporary activities
killall -9 wget
rm /tmp/ispeed.log
rm /tmp/ispeed2.log
rm /tmp/ispeed3.log
rm /tmp/ispeed4.log
rm /tmp/tempfile

Scripts recomendados

Gerando ISO com o camando dd, e exibindo "barra de progresso".

Identifica contatos do google que necessitam de ajustes para o nono digito telefonico

mountcp.sh

Iniciar firewall quando houver rede habilitada (Internet)

Autenticar usuários squid+shellscript+mysql


  

Comentários
[1] Comentário enviado por James_Walker em 23/06/2009 - 10:17h

Este script foi desenvolvido com base em uma internet de velocidade em torno de Kbytes/s. Recentemente notei um bug que faz com que velocidades em Mbytes/s resultem em erro de medição. Este erro foi corrigido na versão 1.1, que também está no www.vivaolinux.com.br.

Obrigado,

Tiago Weber


Contribuir com comentário