Script – Modificar la IP de VestaCP en Debian y Ubuntu

Actualizado el lunes, 11 junio, 2018

Script – Modificar la IP de VestaCP en Debian y Ubuntu.

En ocasiones se nos puede dar el caso que por cambios de localización, de servidor o simplemente queremos otra ip, necesitemos cambiar la IP de nuestro panel de control web «VestaCP«.

Si no eres un Sysadmin avanzado, te puede suponer un autentico quebradero de cabera, por eso mismo te presento un script que hará el trabajo por ti automáticamente.

Recuerda que solo es valido para Debian y Ubuntu (CentOS en este otro articulo).

Script - Modificar la IP de VestaCP en Debian y Ubuntu 1

 

Modificar la IP en VestaCP

Este proceso es bastante simple, lo primero que haremos es crear el archivo.

nano /usr/local/vesta/bin/vesta-update-ip

Copia y pega el siguiente script:
#!/bin/sh

# script to change ips on a VestaCP server.
# usage:
# $0 <oldip> <newip>

#########################
# Configuration Options #
#########################

HAVE_APACHE2=1;
HAVE_HTTPD=0;
HAVE_NGINX=1;
VERBOSE=0;

# DON'T CHANGE ANYTHING BELOW THIS LINE
# -------------------------------------

clear;

LOG=/var/log/vesta/system.log;

MYUID=`/usr/bin/id -u`;
if [ "$MYUID" != 0 ]; then
        echo "You require Root Access to run this script";
        exit 0;
fi;

if [ $# != 2 ] && [ $# != 3 ]; then
        echo "Usage:";
        echo "$0 <oldip> <newip> [<file>]";
        echo "you gave #$#: $0 $1 $2 $3";
        exit 0;
fi;

echo "";
echo "######################################";
echo "# Modificar la IP en server VestaCP  #";
echo "######################################";
echo "";
sleep 5;

OLD_IP=$1;
NEW_IP=$2;

if [ "${VERBOSE}" -eq 1 ]; then
   echo "Old IP: $OLD_IP";
        echo "New IP: $NEW_IP";
        echo "";

        sleep 5;
fi;

DATE=`date '+%F %X'`;
BIN=`echo $0 | awk -F/ '{print $NF}'`;

log()
{
        echo -e "$1";
        echo -e "$1" >> $LOG;

   if [ "${VERBOSE}" -eq 1 ]; then
                echo "";
        fi;
}

swapfile()
{
   if [ "${VERBOSE}" -eq 1 ]; then
      echo "Replacing Old IP with New IP in $1...";
           sleep 5;
   fi;

        if [ ! -e $1 ]; then
                log "Cannot Find $1 to change the IPs. Skipping...";
                return;
        fi;

        TEMP="perl -pi -e 's/${OLD_IP}/${NEW_IP}/g' $1";
        eval $TEMP;

        log "$DATE $BIN $1\t: $OLD_IP -> $NEW_IP";
}

if [ $# = 3 ]; then
        swapfile $3;
        exit 0;
fi;

IPFILE_OLD=/usr/local/vesta/data/ips/$OLD_IP;
IPFILE_NEW=/usr/local/vesta/data/ips/$NEW_IP;

if [ ! -e $IPFILE_OLD ]; then
        echo -n "$IPFILE_OLD does not exist.  Do you want to continue anyway? (y/n) : ";
        read YESNO;

        echo "";

        if [ "$YESNO" != "y" ]; then
                exit 0;
        fi;
else
        mv -f $IPFILE_OLD $IPFILE_NEW;
        log "$DATE $0 $IPFILE_OLD\t: $OLD_IP -> $NEW_IP";
fi;

if [ "${HAVE_APACHE2}" -eq 1 ]; then
        if [ -e /etc/apache2/conf.d/${OLD_IP}.conf ]; then
      swapfile /etc/apache2/conf.d/${OLD_IP}.conf;
                mv -f /etc/apache2/conf.d/$OLD_IP.conf /etc/apache2/conf.d/${NEW_IP}.conf;
        fi;
fi

if [ "${HAVE_HTTPD}" -eq 1 ]; then
        if [ -e /etc/httpd/conf.d/${OLD_IP}.conf ]; then
                swapfile /etc/httpd/conf.d/${OLD_IP}.conf;
                mv -f /etc/httpd/conf.d/$OLD_IP.conf /etc/httpd/conf.d/${NEW_IP}.conf;
        fi;

        swapfile /etc/httpd/conf.d/mod_extract_forwarded.conf;
fi;

if [ "${HAVE_NGINX}" -eq 1 ]; then
        if [ -e /etc/nginx/conf.d/${OLD_IP}.conf ]; then
                swapfile /etc/nginx/conf.d/${OLD_IP}.conf;
                mv -f /etc/nginx/conf.d/$OLD_IP.conf /etc/nginx/conf.d/${NEW_IP}.conf;
        fi;
fi;

swapfile /etc/hosts;

ULDDU=/usr/local/vesta/data/users;

for i in `ls $ULDDU`; do
{

        if [ ! -d $ULDDU/$i ]; then
                continue;
        fi;

        swapfile $ULDDU/$i/web.conf;
        swapfile $ULDDU/$i/dns.conf;

        if [ `find $ULDDU/$i/dns/ -type f | wc -l` -gt 0 ]; then
                for j in `ls $ULDDU/$i/dns/*.conf`; do
                {
                        swapfile $j;
                };
                done;

                for j in `ls /home/$i/conf/dns/*.db`; do
                {
                        swapfile $j;
                };
                done;
        fi;

        if [ "${HAVE_APACHE2}" -eq 1 ]; then
                swapfile /home/$i/conf/web/apache2.conf;
        fi;

        if [ "${HAVE_HTTPD}" -eq 1 ]; then
                swapfile /home/$i/conf/web/httpd.conf;
        fi;

        if [ "${HAVE_NGINX}" -eq 1 ]; then
                swapfile /home/$i/conf/web/nginx.conf;
        fi;

};
done;

#this is needed to update the serial in the db files.
if [ "${HAVE_APACHE2}" -eq 1 ]; then
   if [ "${VERBOSE}" -eq 1 ]; then
      echo "Restarting service: apache2...";
   fi;

        service apache2 restart;

   if [ "${VERBOSE}" -eq 1 ]; then
      echo " done.";
      echo "";
   fi;
fi;

if [ "${HAVE_HTTPD}" -eq 1 ]; then
   if [ "${VERBOSE}" -eq 1 ]; then
      echo "Restarting service: httpd...";
   fi;

        service httpd restart;

   if [ "${VERBOSE}" -eq 1 ]; then
      echo " done.";
      echo "";
   fi;
fi;

if [ "${HAVE_NGINX}" -eq 1 ]; then
   if [ "${VERBOSE}" -eq 1 ]; then
      echo "Restarting service: nginx...";
   fi;

        service nginx restart;

   if [ "${VERBOSE}" -eq 1 ]; then
      echo " done.";
      echo "";
   fi;
fi;

if [ "${VERBOSE}" -eq 0 ]; then
        echo "";
fi;

echo "*** Cambio de $OLD_IP a $NEW_IP ***";
echo "";

Guarda el archivo y cierra el editor.

 

Le concedemos permisos.

chmod 0755 /usr/local/vesta/bin/vesta-update-ip

Y para finalizar lo ejecutamos aplicando la antigua IP y la nueva (usa la secuencia que te indico).
vesta-update-ip viejaip nuevaip

El cambio a sido efectivo, te recomiendo que reinicies el servidor.

 

Como apunte también sera recomendable que una vez modificada la IP, agregaras una tarea cron en el panel de VestaCP.

sudo /usr/local/vesta/bin/vesta-update-ip

 

Para solucionar problemas posteriores visita este articulo.

 

En este articulo vemos como modificar la IP en un servidor con CentOS.

Agregar comentario