-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtimer.sh
More file actions
executable file
·100 lines (79 loc) · 2.16 KB
/
timer.sh
File metadata and controls
executable file
·100 lines (79 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/bin/bash
# exportando padrao numerico
export LC_NUMERIC="POSIX"
# Fator de suavização
ALFA=0.125 # 1/8
BETA=0.25 # 1/4
MS=""
TPKTS=0
DHOST=""
CMD_PING=$(which ping)
[ -z "${CMD_PING}" ] && {
echo "O Comando ${CMD_PING} não foi encontrado"
exit
}
ajuda() {
echo
echo "Desenvolvido por Rodrigo Martins"
echo
echo "$0 NUM HOST"
echo "NUM = Total de pacotes que esperar retorno"
echo "HOST = Opcional mas pode ser informado um host para disparo"
echo
exit
}
disparar() {
local pkts=$1
local destino=$2
echo
[ -z "${destino}" ] && destino="uw.edu"
echo ">> Disparando contra [ ${destino} ( ${pkts} ) ]"
MS=$( ping -c ${pkts} ${destino} 2>> log.txt |
grep -Ewo 'time=([0-9]){1,}\ ms' |
sed -r 's/time=|ms//g' )
}
gerar() {
local i=1
local RTT
local SRTT
local VAR
local SVAR
local RTO
local flag=0
echo " RTT SRTT SVAR RTO"
for RTT in ${MS}
do
[ ${flag} -eq 1 ] && {
#otimizar, remover |, e.g. let SRTT=(1-$ALFA)*$SRTT + $ALFA*$RTT
#SRTT=$(((1-ALFA)*SRTT+ALFA*RTT))
SRTT=$(echo "(1-${ALFA})*$SRTT+${ALFA}*${RTT}" | bc)
VAR=$(echo "${RTT} - ${SRTT}" | bc )
#otmizar, maneira mais inteligente de remover sinal
VAR=$(echo $VAR | sed 's/^-//')
SVAR=$(echo "(1-${BETA})*${SVAR}+${BETA}*${VAR}" | bc )
RTO=$(echo "${SRTT}+4*${SVAR}" | bc)
} || {
RTT0=$RTT
SRTT=$RTT0
let SVAR=$RTT0/2
RTO=0
flag=1
}
printf "%04d %7d %20.4f %20.4f %20.4f\n" $((i++)) ${RTT} ${SRTT} ${SVAR} ${RTO}
done
}
# main
# validar se quantidade de pacotes enviadas é numerico
# pegar somente dois primeiros limitando a ate 99
TPKTS=$1
#TPKTS=${TPKTS:0:2 }
TPKTS=$( echo ${TPKTS} |
grep -Ewo '^[0-9]+$' )
[ $# -le 0 ] || [ -z ${TPKTS} ] && ajuda
DHOST=$2
disparar ${TPKTS} $2
gerar
#considerar perdas
#implementar pacotes udp, tcp e icmp
#verificar jitter
# See more at: http://www.devin.com.br/shell_script/#sthash.tCFaYGI7.dpuf