#616: Rediseño del script {{{setserveraddr}}} para cambiar la IP del servidor principal y su repositorio, modificando los ficheros de configuracióin y la BD.
git-svn-id: https://opengnsys.es/svn/branches/version1.0@4296 a21b9725-9963-47de-94b9-378ad31fedc9remotes/github/debian-pkg
parent
11312082d7
commit
8f70b5bb80
|
@ -5,15 +5,17 @@
|
|||
# Uso: setserveraddr iface
|
||||
# Autor: Ramon Gomez - Univ. Sevilla
|
||||
# Fecha: 2011-01-25
|
||||
# Versión: 1.0.5 - Regenerar ficheros de configuración.
|
||||
# Autor: Ramon Gomez - Univ. Sevilla
|
||||
# Fecha: 2014-06-06
|
||||
|
||||
|
||||
# Variables globales.
|
||||
PROG="$(basename $0)"
|
||||
MYCNF=/tmp/.my.cnf.$$
|
||||
|
||||
# Comprobar parámetros.
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "$PROG: Incorrect operand. Format: $PROG device" >&2
|
||||
echo "$PROG: Incorrect operand. Format: $PROG interface" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ "$USER" != "root" ]; then
|
||||
|
@ -21,21 +23,41 @@ if [ "$USER" != "root" ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
# Aviso informando de que los clientes iniciados pueden quedarse colgados.
|
||||
read -p "WARNING: initiated clients can hang. Continue? (y/n): " ANSWER
|
||||
if [ "${ANSWER^^}" != "Y" ]; then
|
||||
echo "Operation canceled."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Detectar la interfaz de red.
|
||||
DEVICES=$(ip -o link show up|awk -F: '$2!~/lo/ {print $2}')
|
||||
FOUND=0
|
||||
for dev in $DEVICES; do
|
||||
[ "$dev" == "$1" ] && FOUND=1;
|
||||
for DEV in $DEVICES; do
|
||||
# Si se encuentra la interfaz de red, obtener su dirección IP.
|
||||
[ "$DEV" == "$1" ] && SERVERIP=$(ip -o addr show dev $DEV | awk '$3~/inet$/ {sub (/\/.*/, ""); print ($4)}')
|
||||
done
|
||||
|
||||
if [ $FOUND == 1 ]; then
|
||||
# Comprobar si se ha detectado dirección IP.
|
||||
if [ -n "$SERVERIP" ]; then
|
||||
# Ficheros temporales.
|
||||
tmpfile=$(mktemp /tmp/og.XXXXX)
|
||||
MYCNF=$(mktemp /tmp/.my.cnf.XXXXX)
|
||||
trap "rm -f $tmpfile $MYCNF" 1 2 3 6 9 15
|
||||
|
||||
# Comprobar si hay que modificar la configuración de DHCP.
|
||||
CHANGE=0
|
||||
for f in /etc/{dhcp,dhcp3}/dhcpd.conf; do
|
||||
file="${f/./-$1.}"
|
||||
if [ -f $file -a ! $f -ef $file ]; then
|
||||
ln -f $file $f
|
||||
CHANGE=1
|
||||
for f in /etc/{dhcp,hcp3}/dhcpd.conf; do
|
||||
if [ -f $f ]; then
|
||||
# Cambiar el parámetro "next-server" de DHCP.
|
||||
sed "s/next-server.*/next-server $SERVERIP/" $f >$tmpfile
|
||||
file="${f/./-$1.}"
|
||||
# Copiar el fichero y enlazarlo si hay cambios.
|
||||
if ! diff -q $tmpfile $file &>/dev/null; then
|
||||
mv $tmpfile $file
|
||||
chmod 644 $file
|
||||
ln -f $file $f
|
||||
CHANGE=1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
# Si ha cambiado la configuración, reiniciar DHCP.
|
||||
|
@ -46,43 +68,77 @@ if [ $FOUND == 1 ]; then
|
|||
else
|
||||
echo "Don't change the DHCP configuration."
|
||||
fi
|
||||
# Comprobar si hay que modificar la configuración de OpenGnsys.
|
||||
|
||||
# Guardar la IP anterior del repositorio.
|
||||
OPENGNSYS=/opt/opengnsys
|
||||
source $OPENGNSYS/etc/ogAdmRepo.cfg
|
||||
OLDSERVERIP=$IPlocal
|
||||
|
||||
# Comprobar si hay que modificar la configuración de OpenGnsys.
|
||||
CHANGE=0
|
||||
for f in etc/{ogAdmServer,ogAdmRepo,ogAdmAgent}.cfg www/controlacceso.php client/etc/ogAdmClient.cfg; do
|
||||
file="$OPENGNSYS/${f/./-$1.}"
|
||||
if [ ! -f $file ]; then
|
||||
# Procesar los ficheros de configuración de OpenGnSys.
|
||||
for f in $OPENGNSYS/{etc/{ogAdmServer,ogAdmRepo,ogAdmAgent}.cfg,www/controlacceso.php,client/etc/ogAdmClient.cfg}; do
|
||||
# Error si no existe algún fichero de configuración.
|
||||
if [ ! -f $f ]; then
|
||||
echo "$PROG: File $file does not exist." >&2
|
||||
exit 2
|
||||
fi
|
||||
cfg=$OPENGNSYS/$f
|
||||
if [ ! $cfg -ef $file ]; then
|
||||
ln -f $file $cfg
|
||||
# Cambiar la IP del servidor:
|
||||
# - variables ServidorAdm e IPlocal,
|
||||
# - servidor o IP en URLs excepto si contienen "localhost".
|
||||
sed -e "s,ServidorAdm=.*,ServidorAdm=$SERVERIP," \
|
||||
-e "s,IPlocal=.*,IPlocal=$SERVERIP," \
|
||||
-e '/localhost/!s,http://[^/]*/\(.*\),http://'$SERVERIP'/\1,' $f >$tmpfile
|
||||
file="${f/./-$1.}"
|
||||
# Copiar el fichero y enlazarlo si hay cambios.
|
||||
if ! diff -q $tmpfile $file &>/dev/null; then
|
||||
mv $tmpfile $file
|
||||
chmod 644 $file
|
||||
ln -f $file $f
|
||||
CHANGE=1
|
||||
fi
|
||||
done
|
||||
|
||||
# Si ha cambiado la configuración, reiniciar OpenGnSys y actualizar la BD.
|
||||
if [ $CHANGE == 1 ]; then
|
||||
/etc/init.d/opengnsys restart
|
||||
source $OPENGNSYS/etc/ogAdmServer.cfg
|
||||
# Componer fichero con credenciales de conexión.
|
||||
touch $MYCNF
|
||||
chmod 600 $MYCNF
|
||||
cat << EOT > $MYCNF
|
||||
[client]
|
||||
user=$USUARIO
|
||||
password=$PASSWORD
|
||||
EOT
|
||||
# Ejecutar actualización y borrar fichero de credenciales.
|
||||
# Actualizar IP del servidor en la BD.
|
||||
mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -e \
|
||||
"UPDATE entornos SET ipserveradm='$ServidorAdm' WHERE identorno=1"
|
||||
rm -f $MYCNF
|
||||
echo "Default server interface set to: $1 ($ServidorAdm)"
|
||||
"UPDATE entornos
|
||||
SET ipserveradm='$SERVERIP'
|
||||
WHERE identorno=1"
|
||||
|
||||
# Actualizar IP del repositorio en la BD.
|
||||
mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -e \
|
||||
"UPDATE repositorios
|
||||
SET ip='$SERVERIP'
|
||||
WHERE ip='$OLDSERVERIP'"
|
||||
|
||||
# Mostrar instrucciones a realizar tras la ejecución.
|
||||
cat << EOT
|
||||
Default server interface set to: $1 ($SERVERIP)
|
||||
|
||||
Manual tasks:
|
||||
Check DHCP configuration file and restart service, if needed.
|
||||
Log-in as Web Console organization user.
|
||||
- Check URLs in all menus.
|
||||
- Run Advanced Netboot in all rooms.
|
||||
|
||||
EOT
|
||||
else
|
||||
# Mensaje indicando que no se han cambiado datos.
|
||||
echo "Don't change the default interface: $1"
|
||||
fi
|
||||
else
|
||||
echo "$PROG: Network device not found. Format: $PROG device" >&2
|
||||
# Error: interfaz de red no encontrado.
|
||||
echo "$PROG: Network device not found. Format: $PROG interface" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
|
Loading…
Reference in New Issue