Ispeed - Medidor de velocidade de download

Publicado por Tiago Weber 23/06/2009

[ Hits: 13.410 ]

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

Configurando CISCO por Shell Script

Clientes TCP

Unificando arquivos de bloqueio e liberação no squid

Backup Automatizado

iptables, sem frescuras!


  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts