blob: de6dc2a023d9c9910bb9ae76121e94aa53fb21f6 (
plain)
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
|
#!/bin/bash
# genesis_routewatch.sh - Bash-based route probe script
TARGET_HOST="baboon.sshjunkie.com"
MAX_HOPS=30
ALERT_THRESHOLD=5
TRACEROUTE_OUTPUT=$(traceroute -n -m $MAX_HOPS "$TARGET_HOST" 2>/dev/null)
# Fallback if traceroute fails
if [ -z "$TRACEROUTE_OUTPUT" ]; then
echo "GenesisRouteWatch: $(hostname)"
echo "Target: $TARGET_HOST"
echo "Status: CRITICAL - Traceroute failed"
exit 1
fi
# Parse traceroute output
MISSING_HOPS=0
TOTAL_HOPS=0
REPORT="GenesisRouteWatch: $(hostname)\nTarget: $TARGET_HOST\n"
while IFS= read -r line; do
if [[ $line =~ ^[0-9]+ ]]; then
((TOTAL_HOPS++))
if echo "$line" | grep -q "\* \* \*"; then
REPORT+="- MISSING HOP: 0ms\n"
((MISSING_HOPS++))
fi
fi
[[ $TOTAL_HOPS -ge $MAX_HOPS ]] && break
done <<< "$TRACEROUTE_OUTPUT"
REPORT+="\nPath Length: $TOTAL_HOPS"
if [ $MISSING_HOPS -gt 0 ]; then
REPORT+=" | Status: CRITICAL\n"
for ((i=0; i<$MISSING_HOPS; i++)); do
REPORT+="\xF0\x9F\x9A\xA8 Missing hop in path\n"
done
else
REPORT+=" | Status: OK"
fi
# Print the final result
echo -e "$REPORT"
|