HEX
Server: nginx/1.29.3
System: Linux 11979.bigscoots-wpo.com 6.8.0-88-generic #89-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 11 01:02:46 UTC 2025 x86_64
User: nginx (1068)
PHP: 7.4.33
Disabled: exec,system,passthru,shell_exec,proc_open,proc_close,popen,show_source,cmd# Do not modify this line # 1684243876
Upload Files
File: //bigscoots/solusvm/container_sf_ip_swap.sh
#!/bin/bash

# Configuration
CONF_DIR="/etc/vz/conf"
BACKUP_DIR="/etc/vz/conf_backup_$(date +%F_%H%M)"
mkdir -p "$BACKUP_DIR"

RETIRE_RE="(50\.31\.9[89]\.|208\.117\.38\.|50\.31\.114\.|69\.162\.134\.|67\.202\.70\.|208\.100\.53\.|50\.31\.65\.|50\.31\.78\.|23\.29\.132\.|23\.29\.145\.|50\.31\.30\.|69\.162\.173\.|50\.31\.116\.|50\.31\.119\.|208\.117\.4\.)"
KEEP_RE="(38\.58\.22[4-9]\.|38\.65\.22[4-9]\.|207\.241\.19[6-9]\.|74\.121\.20[4-7]\.|198\.175\.2[4-7]\.|216\.185\.21[2-5]\.)"

echo "Backing up configs to $BACKUP_DIR..."
cp $CONF_DIR/*.conf "$BACKUP_DIR/"

for config in $CONF_DIR/*.conf; do
    [ -e "$config" ] || continue
    CTID=$(basename "$config" .conf)
    
    FULL_LINE=$(grep "^IP_ADDRESS=" "$config")
    [ -z "$FULL_LINE" ] && continue

    IP_DATA=$(echo "$FULL_LINE" | sed -e 's/^IP_ADDRESS="//' -e 's/"\s*$//')
    PRIMARY_IP=$(echo "$IP_DATA" | awk '{print $1}')

    if echo "$PRIMARY_IP" | grep -Eq "$RETIRE_RE"; then
        NEW_PRIMARY=$(echo "$IP_DATA" | tr ' ' '\n' | grep -E "$KEEP_RE" | head -n 1)

        if [ -n "$NEW_PRIMARY" ]; then
            REMOVED_TARGET=$(echo " $IP_DATA " | sed "s| $NEW_PRIMARY | |g")
            FINAL_LIST=$(echo "$NEW_PRIMARY $REMOVED_TARGET" | sed -e 's/  */ /g' -e 's/^ //;s/ $//')

            # --- ACTUAL MODIFICATION ---
            sed -i "s|^IP_ADDRESS=.*|IP_ADDRESS=\"$FINAL_LIST\"|" "$config"
            
            # Apply live to the running container
            vzctl set $CTID --save > /dev/null 2>&1
            
            echo "CTID $CTID: Swapped to $NEW_PRIMARY"
        fi
    fi
done

echo "Done! If anything goes wrong, backups are in $BACKUP_DIR"