Files
proxmox/scripts/unifi/add-vlan11-secondary-ip-systemd.sh
defiQUG b3a8fe4496
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
chore: sync all changes to Gitea
- Config, docs, scripts, and backup manifests
- Submodule refs unchanged (m = modified content in submodules)

Made-with: Cursor
2026-03-02 11:37:34 -08:00

153 lines
4.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 ""