script ping

1. script ping

k
DebianDu

(usa Debian)

Enviado em 06/12/2017 - 21:28h

Ola boa noite.
o que esta errado nesse script, ele da o ping mais nao salva em .csv.

#!/bin/bash
clear
Menu(){
echo "Teste de ping para alterar os parametros a seguir"
echo "------------------------------------------"
echo " Menu Principal "
echo "------------------------------------------"
echo
echo "[ 1 ] Tamanho do byte"
echo "[ 2 ] Tempo entre os ping"
echo "[ 3 ] Qtd vezes de teste"
echo "[ 4 ] Sair"
echo
echo
echo -n "Digite para alterar de acordo ? "
read opcao
case $opcao in
1) byte ;;
2) tempo ;;
3) vezes ;;
4) exit ;;
*) "Opcao desconhecida." ; echo ; Principal ;;
esac
}
byte() {
echo "digite o ip";
read ip
echo "Digite o tamanho do byte";
read byte
ping $ip -s $byte |grep icmp | cut -d= -f4 | cut -d' ' -f1 >>ping.csv
Menu
}

tempo() {
echo "digite o ip"
read ip
echo "Digite o tamanho do tempo"
read tempo
ping $ip -c5 -i $tempo |grep icmp | cut -d= -f4 | cut -d' ' -f1 >> ping.csv
Menu
}

vezes() {
echo "digite o ip"
read ip
echo "Digite o tamanho do vezes"
read vezes
ping $ip -c $vezes |grep icmp | cut -d= -f4 | cut -d' ' -f1 >> ping.csv
Menu
}


Menu


  


2. Re: script ping

Kelvin Ferraz
kelvinferraz

(usa Debian)

Enviado em 07/12/2017 - 09:23h

Primeiro realizei umas alterações no seu código de espaçamento:


#!/bin/bash
clear
Menu(){
echo "Teste de ping para alterar os parametros a seguir"
echo "------------------------------------------"
echo " Menu Principal "
echo "------------------------------------------"
echo
echo "[ 1 ] Tamanho do byte"
echo "[ 2 ] Tempo entre os ping"
echo "[ 3 ] Qtd vezes de teste"
echo "[ 4 ] Sair"
echo
echo
echo -n "Digite para alterar de acordo ? "
read opcao
case $opcao in
1) byte ;;
2) tempo ;;
3) vezes ;;
4) exit ;;
*) "Opcao desconhecida." ; echo ; Principal ;;
esac
}
byte() {
echo "digite o ip";
read ip
echo "Digite o tamanho do byte";
read byte
ping $ip -s $byte | grep icmp | cut -d= -f4 | cut -d' ' -f1 >> ping.csv
Menu
}

tempo() {
echo "digite o ip"
read ip
echo "Digite o tamanho do tempo"
read tempo
ping $ip -c5 -i $tempo | grep icmp | cut -d= -f4 | cut -d' ' -f1 >> ping.csv
Menu
}

vezes() {
echo "digite o ip"
read ip
echo "Digite o tamanho do vezes"
read vezes
ping $ip -c $vezes | grep icmp | cut -d= -f4 | cut -d' ' -f1 >> ping.csv
Menu
}


Menu


Outra coisa que fiz foi testar comando por comando do ping, todos estão funcionando perfeitamente, a diferença é que, no teste de tamanho de bytes ele nao finaliza ou seja ele envia para o ping o tamanho de byte escolhido para realizar o teste de ping como exemplo:


Teste de ping com 10 bytes:

ping 10.12.16.2 -s 10
PING 10.12.16.2 (10.12.16.2) 10(38) bytes of data.
18 bytes from 10.12.16.2: icmp_seq=1 ttl=64
18 bytes from 10.12.16.2: icmp_seq=2 ttl=64
18 bytes from 10.12.16.2: icmp_seq=3 ttl=64
18 bytes from 10.12.16.2: icmp_seq=4 ttl=64
18 bytes from 10.12.16.2: icmp_seq=5 ttl=64
18 bytes from 10.12.16.2: icmp_seq=6 ttl=64
18 bytes from 10.12.16.2: icmp_seq=7 ttl=64
18 bytes from 10.12.16.2: icmp_seq=8 ttl=64
18 bytes from 10.12.16.2: icmp_seq=9 ttl=64
18 bytes from 10.12.16.2: icmp_seq=10 ttl=64
18 bytes from 10.12.16.2: icmp_seq=11 ttl=64
18 bytes from 10.12.16.2: icmp_seq=12 ttl=64
18 bytes from 10.12.16.2: icmp_seq=13 ttl=64
18 bytes from 10.12.16.2: icmp_seq=14 ttl=64
18 bytes from 10.12.16.2: icmp_seq=15 ttl=64
18 bytes from 10.12.16.2: icmp_seq=16 ttl=64
18 bytes from 10.12.16.2: icmp_seq=17 ttl=64
18 bytes from 10.12.16.2: icmp_seq=18 ttl=64
18 bytes from 10.12.16.2: icmp_seq=19 ttl=64
18 bytes from 10.12.16.2: icmp_seq=20 ttl=64
^C
--- 10.12.16.2 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 18999ms


Teste com 100 bytes:
ping 10.12.16.2 -s 100
PING 10.12.16.2 (10.12.16.2) 100(128) bytes of data.
108 bytes from 10.12.16.2: icmp_seq=1 ttl=64 time=0.212 ms
108 bytes from 10.12.16.2: icmp_seq=2 ttl=64 time=0.220 ms
108 bytes from 10.12.16.2: icmp_seq=3 ttl=64 time=0.244 ms
108 bytes from 10.12.16.2: icmp_seq=4 ttl=64 time=0.228 ms
108 bytes from 10.12.16.2: icmp_seq=5 ttl=64 time=0.243 ms
^C


Não sei se percebeu o ^C no fim do arquivo, isso foi eu cancelando o comando pois ele não terminava ou seja, não tinha um tempo fim. O que notei e que seria interessante é você limitar a quantidade de pings no testes de bytes, porque ele não finaliza o testes, ele não possui uma parada então quando você cancela o script o shell interpreta que não finalizou e não salva o conteúdo no arquivo.

Sugestão:

Código anterior
ping $ip -s $byte | grep icmp | cut -d= -f4 | cut -d' ' -f1 >> ping.csv

Sugestão:
ping $ip -c 10 -s $byte | grep icmp | cut -d= -f4 | cut -d' ' -f1 >> ping.csv # pode ser 10x ou 100x ou 1000x acredito que resolva seu problema


Os outros teste estão salvando normalmente.
Abraço!


3. Re: script ping

Marcos Felipe
plimo263

(usa Ubuntu)

Enviado em 07/12/2017 - 09:24h

DebianDu escreveu:

Ola boa noite.
o que esta errado nesse script, ele da o ping mais nao salva em .csv.

#!/bin/bash
clear
Menu(){
echo "Teste de ping para alterar os parametros a seguir"
echo "------------------------------------------"
echo " Menu Principal "
echo "------------------------------------------"
echo
echo "[ 1 ] Tamanho do byte"
echo "[ 2 ] Tempo entre os ping"
echo "[ 3 ] Qtd vezes de teste"
echo "[ 4 ] Sair"
echo
echo
echo -n "Digite para alterar de acordo ? "
read opcao
case $opcao in
1) byte ;;
2) tempo ;;
3) vezes ;;
4) exit ;;
*) "Opcao desconhecida." ; echo ; Principal ;;
esac
}
byte() {
echo "digite o ip";
read ip
echo "Digite o tamanho do byte";
read byte
ping $ip -s $byte |grep icmp | cut -d= -f4 | cut -d' ' -f1 >>ping.csv
Menu
}

tempo() {
echo "digite o ip"
read ip
echo "Digite o tamanho do tempo"
read tempo
ping $ip -c5 -i $tempo |grep icmp | cut -d= -f4 | cut -d' ' -f1 >> ping.csv
Menu
}

vezes() {
echo "digite o ip"
read ip
echo "Digite o tamanho do vezes"
read vezes
ping $ip -c $vezes |grep icmp | cut -d= -f4 | cut -d' ' -f1 >> ping.csv
Menu
}


Menu


Bom dia amigo, o comportamento do grep é liberar para a saida todo o fluxo de uma unica vez, mesmo que você de fato veja "cada linha" sendo exibida ele na verdade esta liberando todo o fluxo. No seu caso use o parametro --line-buffered no grep para solicitar que ele libere linha á linha na stdout e use somente um cut para resolver seu problema. Por exemplo, faça este tipo de linha e você conseguirá seu objetivo.

ping $ip -c $vezes | grep --line-buffered icmp | awk '{print $8}' | cut -d= -f 2 >> ping.csv


4. ping

k
DebianDu

(usa Debian)

Enviado em 08/12/2017 - 13:11h

oi boa tarde.
Show de bola, deu certinho o que voces me passaram so mais uma pergunta , quando salva ele nao esta separando os testes.
acrescendo algo na linha no grep

Desde ja agradeço.


5. Re: script ping

Kelvin Ferraz
kelvinferraz

(usa Debian)

Enviado em 08/12/2017 - 17:30h

DebianDu escreveu:

oi boa tarde.
Show de bola, deu certinho o que voces me passaram so mais uma pergunta , quando salva ele nao esta separando os testes.
acrescendo algo na linha no grep

Desde ja agradeço.


Você quer salvar os testes no mesmo arquivo?


6. salvar

k
DebianDu

(usa Debian)

Enviado em 08/12/2017 - 19:40h

oi boa noite,
sim preciso salvar no mesmo arquivo separando por datas


7. Re: script ping

Kelvin Ferraz
kelvinferraz

(usa Debian)

Enviado em 10/12/2017 - 10:17h

DebianDu escreveu:

oi boa noite,
sim preciso salvar no mesmo arquivo separando por datas


Não sei se é a melhor forma de fazer isso, mas acho que de certo:

# Criei a variável DATA que recebe o comando date
DATA=$(date)

# Dando print do nome do teste só para ficar mais fácil o entendimento
echo "Teste tamanho de Byte" >> ping.csv

# Aqui vou printar o comando date, antes do comando ping ser executado
echo "$DATA" >> ping.csv

ping $ip -c 10 -s $byte | grep --line-buffered icmp | awk '{print $8}' | cut -d= -f 2 >> ping.csv



Saída:

Teste tamanho de Byte
sáb dez 9 08:40:01 -02 2017
11 bytes from 8.8.8.8: icmp_seq=1 ttl=128
11 bytes from 8.8.8.8: icmp_seq=2 ttl=128
11 bytes from 8.8.8.8: icmp_seq=3 ttl=128



8. ok

k
DebianDu

(usa Debian)

Enviado em 19/12/2017 - 20:22h

kelvinferraz escreveu:

DebianDu escreveu:

oi boa noite,
sim preciso salvar no mesmo arquivo separando por datas


Não sei se é a melhor forma de fazer isso, mas acho que de certo:

# Criei a variável DATA que recebe o comando date
DATA=$(date)

# Dando print do nome do teste só para ficar mais fácil o entendimento
echo "Teste tamanho de Byte" >> ping.csv

# Aqui vou printar o comando date, antes do comando ping ser executado
echo "$DATA" >> ping.csv

ping $ip -c 10 -s $byte | grep --line-buffered icmp | awk '{print $8}' | cut -d= -f 2 >> ping.csv



Saída:

Teste tamanho de Byte
sáb dez 9 08:40:01 -02 2017
11 bytes from 8.8.8.8: icmp_seq=1 ttl=128
11 bytes from 8.8.8.8: icmp_seq=2 ttl=128
11 bytes from 8.8.8.8: icmp_seq=3 ttl=128


Oo boa noite.
@kelvinferraz deu certo o script agradeço a todos que me ajudaram.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts