Skip to content

RESOLVED=$(nslookup $FQDN $DNS_SERVER 2>/dev/null | grep "Address" | tail -1 | awk '{print $2}')

if [[ "$RESOLVED" == "$EXPECTED" ]]; then echo " ✅ $FQDN → $RESOLVED (private ✓)" ((PASS++)) elif [[ "$RESOLVED" == 10.100.10.* ]]; then echo " ⚠️ $FQDN → $RESOLVED (private, expected $EXPECTED)" ((PASS++)) else echo " ❌ $FQDN → $RESOLVED (expected private $EXPECTED — got public or no response)" ((FAIL++)) fi done

Also test from branch site (Bangalore)

echo "" echo "--- Testing from Bangalore branch (192.168.50.100) ---" for FQDN in "abhavtech-sql.database.windows.net" "abhavtechstorage.blob.core.windows.net"; do RESULT=$(ssh admin@blr-user-01 "nslookup $FQDN 10.252.1.100 2>/dev/null | grep Address | tail -1" 2>/dev/null | awk '{print $2}') [[ "$RESULT" == "10.100.10."* ]] && { echo " ✅ [BLR] $FQDN → $RESULT (private)"; ((PASS++)); } \ || { echo " ❌ [BLR] $FQDN → $RESULT (expected 10.100.10.x)"; ((FAIL++)); } done

echo "" echo "=== TEST 1.5: $PASS PASSED, $FAIL FAILED ==="

---

### TEST 1.6–1.7: SD-WAN Fabric Health


```bash
#!/bin/bash

## sdwan_fabric_health_test.sh


echo "=== TEST 1.6-1.7: SD-WAN FABRIC HEALTH ==="

VMANAGE="vmanage.abhavtech.com"
COOKIE="/tmp/cookies.txt"

## Login

curl -k -s -X POST https://$VMANAGE/j_security_check \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "j_username=admin&j_password=<PASSWORD>" -c $COOKIE > /dev/null

echo ""
echo "--- TEST 1.6: Device Reachability ---"
DEVICES=$(curl -k -s -b $COOKIE "https://$VMANAGE/dataservice/device?type=vedge")
TOTAL=$(echo $DEVICES | python3 -c "import json,sys; d=json.load(sys.stdin); print(len(d.get('data', [])))")
REACHABLE=$(echo $DEVICES | python3 -c "import json,sys; d=json.load(sys.stdin); print(sum(1 for x in d['data'] if x.get('reachability')=='reachable'))")
echo "  Devices: $REACHABLE/$TOTAL reachable"
[[ "$REACHABLE" -eq 19 ]] && echo "  ✅ PASS: All 19 devices reachable" \
  || { echo "  ❌ FAIL: $((19 - REACHABLE)) devices unreachable"; \
       echo $DEVICES | python3 -c "import json,sys; d=json.load(sys.stdin); [print(f'  - {x[\"host-name\"]} ({x[\"system-ip\"]})') for x in d['data'] if x.get('reachability')!='reachable']"; }

echo ""
echo "--- TEST 1.7: BFD Sessions ---"
for HUB in mum-hub-01 lon-hub-01 nj-hub-01; do
  BFD_TOTAL=$(ssh admin@$HUB "show sdwan bfd sessions | wc -l" 2>/dev/null)
  BFD_UP=$(ssh admin@$HUB "show sdwan bfd sessions | grep Up | wc -l" 2>/dev/null)
  echo "  [$HUB]: $BFD_UP/$BFD_TOTAL BFD sessions UP"
  [[ "$BFD_UP" -ge 30 ]] && echo "  ✅ PASS: BFD health OK" || echo "  ❌ FAIL: Low BFD sessions"
done

echo ""
echo "--- TEST 1.8: OMP Route Distribution (VPN 1) ---"
for SITE in mum-hub-01 blr-isr-01 del-isr-01; do
  OMP_COUNT=$(ssh admin@$SITE "show sdwan omp routes vpn 1 | count" 2>/dev/null | tail -1)
  echo "  [$SITE]: $OMP_COUNT OMP routes in VPN 1"
  [[ "$OMP_COUNT" -ge 20 ]] && echo "  ✅ PASS" || echo "  ❌ FAIL: Low route count (expected 20+)"
done


TEST 1.9–1.10: Umbrella and ThousandEyes

## TEST 1.9: Umbrella Registration

echo "=== TEST 1.9: UMBRELLA DEVICE REGISTRATION ==="

for SITE in mum-hub-01 lon-hub-01 nj-hub-01 blr-isr-01 del-isr-01 hyd-br-01; do
  STATUS=$(ssh admin@$SITE "show umbrella config | grep -i status" 2>/dev/null)
  echo "$STATUS" | grep -qi "registered" && echo "  ✅ [$SITE]: Umbrella registered" \
    || echo "  ❌ [$SITE]: Umbrella NOT registered"
done

## TEST 1.10: ThousandEyes Agents

echo ""
echo "=== TEST 1.10: THOUSANDEYES AGENT STATUS ==="

## Use ThousandEyes API v7

TE_TOKEN="<TE_BEARER_TOKEN>"

curl -s -X GET "https://api.thousandeyes.com/v7/agents" \
  -H "Authorization: Bearer $TE_TOKEN" | \
  python3 -c "
import json, sys
data = json.load(sys.stdin)
agents = data.get('agents', [])
print(f'Total agents: {len(agents)}')
for a in agents:
    status = '✅' if a.get('enabled') and a.get('agentState') == 'Online' else '❌'
    print(f'{status} {a[\"agentName\"]:20} {a.get(\"agentState\",\"unknown\"):8} Last seen: {a.get(\"lastSeen\",\"N/A\")}')
"

```