Files
proxmox/scripts/utils/network-utils.sh

55 lines
1.5 KiB
Bash
Raw Permalink Normal View History

#!/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
}