forked from abas/bash-pingtest
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelper
119 lines (110 loc) · 3.44 KB
/
helper
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/bin/bash
set -e
print_title () {
echo "-|-------------------------------------------------------"
echo "| IP Address ------------ | Stat ---------------------- |"
echo "-|-------------------------------------------------------"
}
docs () {
echo ""
echo "command [option] params"
echo "|"
echo "|--> option :"
echo -e "|"
echo -e "| -h \t\t --help \t\t\t\t show help list"
echo -e "| -d \t\t --domain [param] \t\t\t scan ip domain"
echo -e "| -l \t\t --list-domain [param] \t\t\t scan ip on listed domain"
echo -e "| -r \t\t --range [prefix] [begin] [end] \t scan ip in range"
echo "|"
echo "-]PINGTESTER"
echo ""
}
is_valid_ip () {
idx=0
prefix=$(echo $1 | tr "." "\n")
declare -a prefixIdx=(nil nil nil)
for item in $prefix
do
prefixIdx[idx]=$item
idx=$idx+1
done
if
[[ ${prefixIdx[0]} -gt 255 ]] ||
[[ ${prefixIdx[1]} -gt 255 ]] ||
[[ ${prefixIdx[2]} -gt 255 ]] ||
[[ ${prefixIdx[0]} -lt 1 ]] ||
[[ ${prefixIdx[1]} -lt 0 ]] ||
[[ ${prefixIdx[2]} -lt 0 ]] ||
[[ ${prefixIdx[2]} = "nil" ]]
then
echo 1; return 1; break
else
echo 0; return 0
fi
}
lets_rock_up () {
for (( i=$2 ; i<=$3 ; i++ )); do
packet_loss=$(ping $1.$i -t 1 | grep "packet loss" | awk '{print $7}')
if [[ $packet_loss = "100.0%" ]]; then
if [[ $i -gt 99 ]]; then
echo "| $IP_PREFIX.$i -------- | DOWN - packet_loss : $packet_loss |"
elif [[ $i -gt 9 ]]; then
echo "| $IP_PREFIX.$i --------- | DOWN - packet_loss : $packet_loss |"
else
echo "| $IP_PREFIX.$i ---------- | DOWN - packet_loss : $packet_loss |"
fi
else
if [[ $i -gt 99 ]]; then
echo "| $IP_PREFIX.$i -------- | UP --- packet_loss : $packet_loss |"
elif [[ $i -gt 9 ]]; then
echo "| $IP_PREFIX.$i --------- | UP --- packet_loss : $packet_loss |"
else
echo "| $IP_PREFIX.$i ---------- | UP --- packet_loss : $packet_loss |"
fi
fi
done
}
lets_rock_down () {
for (( i=$2 ; i>=$3 ; i-- )); do
packet_loss=$(ping $1.$i -w 1 | grep "packet loss" | awk '{print $6}')
if [[ $packet_loss = "100.0%" ]]; then
if [[ $i -gt 99 ]]; then
echo "| $IP_PREFIX.$i -------- | DOWN - packet_loss : $packet_loss |"
elif [[ $i -gt 9 ]]; then
echo "| $IP_PREFIX.$i --------- | DOWN - packet_loss : $packet_loss |"
else
echo "| $IP_PREFIX.$i ---------- | DOWN - packet_loss : $packet_loss |"
fi
else
if [[ $i -gt 99 ]]; then
echo "| $IP_PREFIX.$i -------- | UP --- packet_loss : $packet_loss |"
elif [[ $i -gt 9 ]]; then
echo "| $IP_PREFIX.$i --------- | UP --- packet_loss : $packet_loss |"
else
echo "| $IP_PREFIX.$i ---------- | UP --- packet_loss : $packet_loss |"
fi
fi
done
}
pingtest (){
IP_PREFIX=$1
START_POINT=$2
END_POINT=$3
if [[ -z $IP_PREFIX ]] || [[ -z $START_POINT ]] || [[ -z $END_POINT ]]; then
echo "./pingtest [prefix_ip] [start_point] [end_point]"
echo "|"
echo "|- example"
echo "| ./pingtest 192.168.10 1 128"
echo "|---"
echo ""
elif [[ $START_POINT -lt 1 ]] || [[ $END_POINT -lt 1 ]] || [[ $(is_valid_ip $IP_PREFIX) -gt 0 ]]; then
echo "|- invalid prefix, input valid prefix"
echo "|ex:"
echo "|-- 10.10.10"
else
print_title
[[ $START_POINT -gt $END_POINT ]] && \
lets_rock_down $IP_PREFIX $START_POINT $END_POINT || \
lets_rock_up $IP_PREFIX $START_POINT $END_POINT
fi
}