Calculo no Shell Script

1. Calculo no Shell Script

Leandro
leandrokreutzer

(usa Linux Mint)

Enviado em 11/06/2019 - 20:37h

Boa noite, galera.

Preciso de ajuda pra calcular o tempo médio de um ping e salvar em um arquivo .txt.
Os pings estão sendo emitidos porém não consigo calcular a média deles.
Segue o script que estou testando:


#!/bin/bash

#teste da rede

clear;
menu()
{
echo "Teste de conexão ";
echo "";
echo "";
echo "";
echo "[1]Testar a Conexão";
echo "[0]Sair";
}

principal()
{
clear
menu
read opcao;

while [ $opcao!="s" ]; do

menu

if [ $opcao == 1 ]
then
teste_conexao
elif [ $opcao == 0 ]
then
sair
else
valor_invalido
fi



# case $opcao in
# 1)teste_conexao;;
# 0)sair;;
# esac

done

}


teste_conexao()
{

echo "Teste de conexao de sua rede";
echo

echo "Digite um endereco";
read site;

if ! ping -c 1 $site >> log01.log; then
echo "A internet não está funcionando" >> log01.log;
date >> log01.log;
else
echo "A internet está funcionando" # >> log01.log;
date >> log01.log;

for i in {10..1};
do
teste=$(ping $site -c 1 | awk -F 'time=' '{ print $2 }' | awk -F ' ' '{ print $1 }' | bc -l);

echo $teste >> log02.log;
echo "$teste"
soma1=(soma1 + teste)
#soma1 < log02.log
done
media=($soma1 / 10)
echo "$media"
echo $media >> log02.log;

echo $teste >> log02.log;



fi

sleep 3; #segurando para voltar ao menu principal

principal

}

sair()
{
clear
echo "Obrigado e até a próxima!"
exit;
}

valor_invalido(){
clear
echo "O valor fornecido nào é um número válido, obrigado por usar o Teste de Conexão!"
exit;
}



clear
principal


  


2. Re: Calculo no Shell Script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 11/06/2019 - 23:18h

Boa noite.
Segue sugestão para calcular a "média" do ping.
ping -c16 192.168.1.1|awk -F '[= ]' '/seq/ {sub(",", "."); print $10}'|awk '{sum+=$1;} END {print sum/NR}' 


Em tempo:
Na ultima linha, tem o calculo . . .
ping -c4 192.168.1.1
round-trip min/avg/max/stddev = 2,147/4,364/7,982/2,415 ms


Importante => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


3. Re: Calculo no Shell Script

Perfil removido
removido

(usa Nenhuma)

Enviado em 12/06/2019 - 09:46h


Você pode compartilhar esse script conosco depois?

Gostei da interface de menu que você fez...
Nunca pensei num menu desses...
O Menu para mim é o Manual de Instruções...

Legal o teste.. Não consegui inserir o patch do msoliver
Ficarei na espreita para atualizações aqui... Boa sorte!


4. Re: Calculo no Shell Script

Leandro
leandrokreutzer

(usa Linux Mint)

Enviado em 12/06/2019 - 11:57h

naufragus88 escreveu:


Você pode compartilhar esse script conosco depois?

Gostei da interface de menu que você fez...
Nunca pensei num menu desses...
O Menu para mim é o Manual de Instruções...

Legal o teste.. Não consegui inserir o patch do msoliver
Ficarei na espreita para atualizações aqui... Boa sorte!


naufragus88 escreveu:


Você pode compartilhar esse script conosco depois?

Gostei da interface de menu que você fez...
Nunca pensei num menu desses...
O Menu para mim é o Manual de Instruções...

Legal o teste.. Não consegui inserir o patch do msoliver
Ficarei na espreita para atualizações aqui... Boa sorte!






Não achei onde anexar o arquivo.
Estamos trabalhando em uma atividade do curso, o arquivo já foi um pouco otimizado.


5. Re: Calculo no Shell Script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 12/06/2019 - 17:08h

Boa tarde,
Segue opção, testado e funcionando.
Com Menu Colorido e Centralizado na Tela... :)
#!/bin/bash
CVA="\x1B[0;38;5;196m"
CSM="\e[0;38;05;28m"
FC="\x1B[m"
CE="\x1B[1;38;5;11m"

COLS() {
COLS=$(tput cols)
POS=$(((COLS-44)/2+1))
POS1=$((POS+1))
POS2=$((POS+2))
POS3=$((POS2+39))
(($COLS>=44)) && MENU || { echo -e "$CVA AJUSTE A TELA $FC" ; exit ; }
}

MENU() {
tput clear
printf "${CE}\e[2;${POS2}f••••••••••••••••••••••••••••••••••••••••"
printf "\e[3;${POS1}f•••••••••••••••••• MENU ••••••••••••••••••"
printf "\e[4;${POS}f•••\e[4;${POS3}f•••"
printf "\e[5;${POS}f•••${CSM} [1] Testar a Conexão ${CE}•••"
printf "\e[6;${POS}f•••${CSM} [2] Posiciona o Menu ${CE}•••"
printf "\e[7;${POS}f•••${CSM} [3] Sair ${CE}•••"
printf "\e[8;${POS}f•••\e[8;${POS3}f•••"
printf "${CE}\e[9;${POS1}f••••••••••••••••••••••••••••••••••••••••••"
printf "\e[10;${POS2}f••••••••••••••••••••••••••••••••••••••••\n\n"$FC""
read -p " OPÇãO: " -n1 OPC

case "$OPC" in
1) Testa_Rede ;;
2) COLS ;;
3) echo -e "\n Saindo...";sleep 0.5; exit 0;;
*) echo -e "$CVA \" OPÇãO INVáLIDA! \" $FC" ; sleep 1 ; MENU ;;
esac
}

LINE() {
printf '%*s' "44" '' | sed "s/ /—/g"
}

PROMPT() {
printf ""$CE"%$(((COLS-44)/2))s$(LINE)";
printf "\n%$(((COLS-38)/2))s<< APERTE UMA TECLA PARA CONTINUAR >>\n";
printf "%$(((COLS-44)/2))s$(LINE)$FC\n";
read -s -n1 local PRMPT;
MENU;
}

Testa_Rede () {
echo -e "\n Teste de conexao da rede.";
read -p " Digite um endereco: " site;

if ! ping -c 1 $site &>/dev/null; then
echo -e " A internet não está funcionando:\n Teste Efetuado em: $(date)"|tee -a log.txt;
exit
fi

for i in {0..6};do
res[$i]=$(ping $site -c1 | awk -F 'time=' '{ print $2 }' | awk '{sub(",", "."); printf "%s" ,$1 }');
sleep 0.125;
done
sum=$(sed 's/ /+/g' <<< ${res[@]}|bc)
avg=$(bc <<< "scale=4;$sum/${#res[@]}");
echo -e " A internet está funcionando:\n Teste Efetuado em: $(date)\n TEMPOS: ${res[@]}\n MEDIA: ${avg}"|tee -a log.txt
PROMPT
}

COLS

Importante: => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


6. Re: Calculo no Shell Script

Perfil removido
removido

(usa Nenhuma)

Enviado em 12/06/2019 - 18:17h


Que legal msoliver!
Obrigadão mesmo!
Ficou muito massa!

Valeu para o leandrokreutzer também!
Espero que tenha resolvido as dúvidas.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts