Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- Config, docs, scripts, and backup manifests - Submodule refs unchanged (m = modified content in submodules) Made-with: Cursor
153 lines
4.1 KiB
Bash
Executable File
153 lines
4.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
|
||
# Load IP configuration
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||
source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
|
||
|
||
|
||
# Add VLAN 11 secondary IP with systemd service for persistence (WSL2 compatible)
|
||
# Creates a systemd service that runs on boot to add the IP
|
||
|
||
set -e
|
||
|
||
# Configuration
|
||
VLAN11_IP="${IP_SERVICE_23:-${IP_SERVICE_23:-192.168.11.23}}"
|
||
VLAN11_NETMASK="24"
|
||
VLAN11_GATEWAY="${NETWORK_GATEWAY:-192.168.11.1}"
|
||
PRIMARY_IF="eth0"
|
||
|
||
echo "🔧 Adding VLAN 11 Secondary IP Address (Persistent via systemd)"
|
||
echo ""
|
||
|
||
# Check if running as root
|
||
if [ "$EUID" -ne 0 ]; then
|
||
echo "❌ This script must be run with sudo"
|
||
echo " Usage: sudo $0"
|
||
exit 1
|
||
fi
|
||
|
||
CURRENT_IP=$(ip -4 addr show $PRIMARY_IF 2>/dev/null | grep -oP 'inet \K[\d.]+' | head -1)
|
||
|
||
echo "📋 Configuration:"
|
||
echo " Primary Interface: $PRIMARY_IF"
|
||
echo " Current IP: $CURRENT_IP"
|
||
echo " VLAN 11 IP: $VLAN11_IP/$VLAN11_NETMASK"
|
||
echo " VLAN 11 Gateway: $VLAN11_GATEWAY"
|
||
echo ""
|
||
|
||
# Add IP immediately
|
||
echo "➕ Adding VLAN 11 IP address immediately..."
|
||
ip addr add $VLAN11_IP/$VLAN11_NETMASK dev $PRIMARY_IF 2>/dev/null || true
|
||
|
||
# Add route
|
||
if ! ip route show | grep -q "${NETWORK_192_168_11_0:-192.168.11.0}/24"; then
|
||
ip route add ${NETWORK_192_168_11_0:-192.168.11.0}/24 dev $PRIMARY_IF src $VLAN11_IP 2>/dev/null || true
|
||
fi
|
||
|
||
echo " ✅ IP added (temporary)"
|
||
echo ""
|
||
|
||
# Create systemd service for persistence
|
||
SERVICE_FILE="/etc/systemd/system/add-vlan11-ip.service"
|
||
SCRIPT_FILE="/usr/local/bin/add-vlan11-ip.sh"
|
||
|
||
echo "📝 Creating systemd service for persistence..."
|
||
echo ""
|
||
|
||
# Create script
|
||
cat > "$SCRIPT_FILE" << 'EOFSCRIPT'
|
||
#!/usr/bin/env bash
|
||
# Script to add VLAN 11 secondary IP
|
||
|
||
PRIMARY_IF="eth0"
|
||
VLAN11_IP="${IP_SERVICE_23:-${IP_SERVICE_23:-192.168.11.23}}"
|
||
VLAN11_NETMASK="24"
|
||
VLAN11_GATEWAY="${NETWORK_GATEWAY:-192.168.11.1}"
|
||
|
||
# Wait for interface to be up
|
||
sleep 2
|
||
|
||
# Add IP if not already present
|
||
if ! ip addr show $PRIMARY_IF | grep -q "$VLAN11_IP"; then
|
||
ip addr add $VLAN11_IP/$VLAN11_NETMASK dev $PRIMARY_IF
|
||
fi
|
||
|
||
# Add route if not present
|
||
if ! ip route show | grep -q "${NETWORK_192_168_11_0:-192.168.11.0}/24"; then
|
||
ip route add ${NETWORK_192_168_11_0:-192.168.11.0}/24 dev $PRIMARY_IF src $VLAN11_IP
|
||
fi
|
||
EOFSCRIPT
|
||
|
||
chmod +x "$SCRIPT_FILE"
|
||
echo " ✅ Script created: $SCRIPT_FILE"
|
||
|
||
# Create systemd service
|
||
cat > "$SERVICE_FILE" << EOF
|
||
[Unit]
|
||
Description=Add VLAN 11 Secondary IP Address
|
||
After=network-online.target
|
||
Wants=network-online.target
|
||
|
||
[Service]
|
||
Type=oneshot
|
||
ExecStart=$SCRIPT_FILE
|
||
RemainAfterExit=yes
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
EOF
|
||
|
||
echo " ✅ Service created: $SERVICE_FILE"
|
||
echo ""
|
||
|
||
# Enable and start service
|
||
echo "🔄 Enabling systemd service..."
|
||
systemctl daemon-reload
|
||
systemctl enable add-vlan11-ip.service
|
||
systemctl start add-vlan11-ip.service
|
||
|
||
if [ $? -eq 0 ]; then
|
||
echo " ✅ Service enabled and started"
|
||
else
|
||
echo " ⚠️ Service may not be available (WSL2 may not support systemd)"
|
||
echo " 💡 IP is added temporarily - will need to run script on each boot"
|
||
fi
|
||
|
||
# Verify
|
||
echo ""
|
||
echo "🔍 Verifying configuration..."
|
||
sleep 2
|
||
|
||
NEW_IPS=$(ip -4 addr show $PRIMARY_IF | grep "inet " | awk '{print $2}')
|
||
echo " Current IP addresses on $PRIMARY_IF:"
|
||
echo "$NEW_IPS" | sed 's/^/ /'
|
||
|
||
if echo "$NEW_IPS" | grep -q "$VLAN11_IP"; then
|
||
echo " ✅ VLAN 11 IP ($VLAN11_IP) is configured"
|
||
else
|
||
echo " ⚠️ VLAN 11 IP not found"
|
||
fi
|
||
|
||
# Test connectivity
|
||
echo ""
|
||
echo "🧪 Testing Connectivity..."
|
||
if ping -c 1 -W 2 $VLAN11_GATEWAY >/dev/null 2>&1; then
|
||
echo " ✅ VLAN 11 gateway ($VLAN11_GATEWAY) is reachable"
|
||
else
|
||
echo " ⚠️ VLAN 11 gateway ($VLAN11_GATEWAY) is not reachable"
|
||
fi
|
||
|
||
echo ""
|
||
echo "✅ Configuration complete!"
|
||
echo ""
|
||
if systemctl is-enabled add-vlan11-ip.service >/dev/null 2>&1; then
|
||
echo "💡 Service is enabled - IP will be added automatically on boot"
|
||
else
|
||
echo "💡 Note: On WSL2, you may need to run the script manually on each boot"
|
||
echo " Or add to ~/.bashrc or ~/.profile:"
|
||
echo " sudo ip addr add $VLAN11_IP/$VLAN11_NETMASK dev $PRIMARY_IF"
|
||
fi
|
||
echo ""
|