Teste de velocidade de conexão via FTP e registro em log
Publicado por Renato Augusto Andrade (última atualização em 06/12/2011)
[ Hits: 12.376 ]
Escrevi e utilizo este programa há mais de dois anos para testar a velocidade da conexão em Vsats de um provedor de internet satelital onde trabalho.
Ele faz o download de três arquivos, sendo o primeiro de um servidor interno da rede do provedor e dois de origem externa, a fim de comparar as velocidades e ajudar a detectar alguma eventual anomalia no tráfego.
Resolvi publicar este script porque, apesar de ser muito simples, pode ser útil para quem está aprendendo Shell Script ou que tenha curiosidade em monitorar a qualidade de seu tráfego sem usar programas pesados.
A saída é um arquivo *.txt que poderá até mesmo ser importado para uma planilha sem a menor dificuldade.
E claro, este programa poderá ser executado manualmente ou agendado no CRON.
#!/bin/bash
###
###
###
### Teste de FTP em Vsats
### com cliente Linux
###
###
### Desenvolvido por Renato Augusto Andrade
### Belo Horizonte/MG
###
### Por favor mantenha o nome do autor
###
###
###
# Cria um 'arquivo temporario' para trabalhar as informacoes.
log=".testeftplog"
# Arquivo onde serao gravados os resultados.
arqsaida="ftp.txt "
# Isso foi necessidade particular do desenvolvedor, para prevenir
# que o CRON executasse o programa na raiz ou no diretorio /root.
usr=rede1
cd /home/$usr
# Armazena data e hora do teste.
agora=`date +%d/%m"-"%R`
# Armazena os nomes dos arquivos a descarregar.
arqint="rpa2211.exe"
arqext1="plenus.zip"
arqext2="libtool-2.2.tar.bz2"
# Armazena os servidores.
intftp="192.168.5.26"
ext1ftp="ftp.cecom.ufmg.br"
ext2ftp="ftp.unicamp.br"
# Armazena o caminho ate cada um dos arquivos a descarregar.
#camint="pub/"
camext1="pub/Plenus.32b/"
camext2="pub/gnu/libtool/"
# Verifica se o arquivo de saida existe, e escreve os titulos.
if [ ! -e $arqsaida ];then
echo -e "DATA-HORA\tINTERNO\tEXTERNO1\tEXTERNO2" > $arqsaida;
chown $usr:$usr $arqsaida;
chmod 664 $arqsaida;
fi
# Apaga, do diretorio atual, cada um dos arquivos a serem baixados,
# evitando erros de duplicidades ao executar o ftp.
function apaga(){
if [ -e $1 ];then rm -f $1;fi
}
for i in $log $arqint $arqext1 $arqext2;
do apaga $i;
done
# Filtra o resultado, trazendo somente o valor numerico.
function filtro(){
cat $log | grep -i "/s" | sed s/\ /%/g | awk -F% '{print $7}' | sed s/\(//g
}
# Executa o FTP interno.
function ftpint(){
echo "Baixando arquivo $arqint."
cat /dev/null > $log
ftp -vin >> $log <<FIM_INT
open $intftp
user ftp 1dois3
passive
binary
get $arqint
bye
FIM_INT
}
# Executa o FTP externo 1.
function ftpext1(){
echo "Baixando arquivo $arqext1."
cat /dev/null > $log
ftp -vin >> $log <<FIM_EXT1
open $ext1ftp
user anonymous guest
passive
binary
cd $camext1
get $arqext1
bye
FIM_EXT1
}
# Executa o FTP externo 2.
function ftpext2(){
echo "Baixando arquivo $arqext2."
cat /dev/null > $log
ftp -vin >> $log <<FIM_EXT2
open $ext2ftp
user anonymous guest
passive
binary
cd $camext2
get $arqext2
bye
FIM_EXT2
}
# Transforma em decimal os resultados obtidos em notacao cientifica.
function transf(){
if [ -z `expr length $1` ];then
echo "0";
elif [ `expr length $1` -lt 5 ];then
echo $1;
else
echo $1 | sed s/e/\*10/g | sed s/\+/\^/g | bc | \
tr ['.'] [','] | sed s/,0//g;
fi
}
# Chama cada uma das funcoes e alimenta variaveis, bem como
# apresenta mensagem na tela, se for executado manualmente.
clear
echo -e "\n\t\t\tTESTE DE FTP"
echo -e "\n\n\tNAO FECHE A JANELA ATE O PROGRAMA TERMINAR"
echo -e "\n\nA janela se fecha sozinha."
ftpint
int=$( transf $(filtro) )
ftpext1
ext1=$( transf $(filtro) )
ftpext2
ext2=$( transf $(filtro) )
# Escreve o resultado no arquivo de saida.
echo -e "$agora\t$int\t$ext1\t\t$ext2" >> $arqsaida
# Apaga os arquivos desnecessarios e sai do programa.
for i in $log $arqint $arqext1 $arqext2;
do apaga $i;
done
exit 0
AptList v1.1 - instalação de pacotes DEB a partir de uma lista
Prompt Interativo para o Legendary
Script para preparar o pc para receber e gerenciar celular MOTOROLA (refeito o script)
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)
Secure boot, artigo interessante, nada técnico. (4)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)









