summaryrefslogtreecommitdiff
path: root/genesis_routewatch.sh
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"