55 lines
1.5 KiB
Bash
55 lines
1.5 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# Network Utility Functions
|
||
|
|
# Consolidated functions from small network-related scripts
|
||
|
|
# Usage: source "$(dirname "${BASH_SOURCE[0]}")/../utils/network-utils.sh"
|
||
|
|
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
# Load shared modules
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||
|
|
source "$SCRIPT_DIR/../lib/ip-config.sh" 2>/dev/null || true
|
||
|
|
source "$SCRIPT_DIR/../lib/logging.sh" 2>/dev/null || true
|
||
|
|
|
||
|
|
# Test network connectivity
|
||
|
|
network_test() {
|
||
|
|
local ip="$1"
|
||
|
|
local port="${2:-}"
|
||
|
|
|
||
|
|
if [ -n "$port" ]; then
|
||
|
|
if timeout 2 bash -c "</dev/tcp/$ip/$port" 2>/dev/null; then
|
||
|
|
log_success "Network connectivity OK: $ip:$port"
|
||
|
|
return 0
|
||
|
|
else
|
||
|
|
log_error "Network connectivity FAILED: $ip:$port"
|
||
|
|
return 1
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
if ping -c 2 -W 2 "$ip" >/dev/null 2>&1; then
|
||
|
|
log_success "Network reachable: $ip"
|
||
|
|
return 0
|
||
|
|
else
|
||
|
|
log_error "Network unreachable: $ip"
|
||
|
|
return 1
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
# Get IP address
|
||
|
|
network_get_ip() {
|
||
|
|
local interface="${1:-eth0}"
|
||
|
|
ip addr show "$interface" 2>/dev/null | grep -oP 'inet \K[\d.]+' | head -1
|
||
|
|
}
|
||
|
|
|
||
|
|
# Check DNS resolution
|
||
|
|
network_check_dns() {
|
||
|
|
local hostname="$1"
|
||
|
|
if host "$hostname" >/dev/null 2>&1; then
|
||
|
|
log_success "DNS resolution OK: $hostname"
|
||
|
|
return 0
|
||
|
|
else
|
||
|
|
log_error "DNS resolution FAILED: $hostname"
|
||
|
|
return 1
|
||
|
|
fi
|
||
|
|
}
|