diff options
Diffstat (limited to 'scripts/testing/lib/network-diagnostics.sh')
| -rw-r--r-- | scripts/testing/lib/network-diagnostics.sh | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/scripts/testing/lib/network-diagnostics.sh b/scripts/testing/lib/network-diagnostics.sh index 3f9735b..f7cae11 100644 --- a/scripts/testing/lib/network-diagnostics.sh +++ b/scripts/testing/lib/network-diagnostics.sh @@ -3,27 +3,30 @@ # Author: Craig Jennings <craigmartinjennings@gmail.com> # License: GNU GPLv3 -# Note: logging.sh should already be sourced by the calling script +# Note: logging.sh and vm-utils.sh should already be sourced by the calling script +# Uses globals: ROOT_PASSWORD, SSH_PORT, SSH_OPTS, VM_IP (from vm-utils.sh or calling script) # Run quick network diagnostics -# Args: $1 = VM IP address or hostname run_network_diagnostics() { - local vm_host="$1" + local password="${ROOT_PASSWORD:-archsetup}" + local port="${SSH_PORT:-22}" + local host="${VM_IP:-localhost}" + local ssh_base="sshpass -p $password ssh $SSH_OPTS -p $port root@$host" section "Pre-flight Network Diagnostics" - # Test 1: Basic connectivity + # Test 1: Basic connectivity (use curl instead of ping - SLIRP may not handle ICMP) step "Testing internet connectivity" - if sshpass -p 'archsetup' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$vm_host "ping -c 3 8.8.8.8 >/dev/null 2>&1"; then + if $ssh_base "curl -s --connect-timeout 5 -o /dev/null http://archlinux.org" 2>/dev/null; then success "Internet connectivity OK" else error "No internet connectivity" return 1 fi - # Test 2: DNS resolution + # Test 2: DNS resolution (use getent which is always available, unlike nslookup/dig) step "Testing DNS resolution" - if sshpass -p 'archsetup' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$vm_host "nslookup archlinux.org >/dev/null 2>&1"; then + if $ssh_base "getent hosts archlinux.org >/dev/null 2>&1" 2>/dev/null; then success "DNS resolution OK" else error "DNS resolution failed" @@ -32,7 +35,7 @@ run_network_diagnostics() { # Test 3: Arch mirror accessibility step "Testing Arch mirror access" - if sshpass -p 'archsetup' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$vm_host "curl -s -I https://mirrors.kernel.org/archlinux/ | head -1 | grep -qE '(200|301)'"; then + if $ssh_base "curl -s -I https://mirrors.kernel.org/archlinux/ | head -1 | grep -qE '(200|301)'" 2>/dev/null; then success "Arch mirrors accessible" else error "Cannot reach Arch mirrors" @@ -41,7 +44,7 @@ run_network_diagnostics() { # Test 4: AUR accessibility step "Testing AUR access" - if sshpass -p 'archsetup' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$vm_host "curl -s -I https://aur.archlinux.org/ | head -1 | grep -qE '(200|405)'"; then + if $ssh_base "curl -s -I https://aur.archlinux.org/ | head -1 | grep -qE '(200|405)'" 2>/dev/null; then success "AUR accessible" else error "Cannot reach AUR" @@ -50,8 +53,7 @@ run_network_diagnostics() { # Show network info info "Network configuration:" - sshpass -p 'archsetup' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$vm_host \ - "ip addr show | grep 'inet ' | grep -v '127.0.0.1'" 2>/dev/null | while read line; do + $ssh_base "ip addr show | grep 'inet ' | grep -v '127.0.0.1'" 2>/dev/null | while read line; do info " $line" done |
