#!/bin/bash # setserveraddr: modifica los ficheros de configuración para asignar los valores # de la interfaz de red solicitada. # Nota: se enlazan los ficheros a los predefinidos detectados para la interfaz. # Uso: setserveraddr iface # Autor: Ramon Gomez - Univ. Sevilla # Fecha: 2011-01-25 # Variables globales. PROG="$(basename $0)" MYCNF=/tmp/.my.cnf.$$ # Comprobar parámetros. if [ $# -ne 1 ]; then echo "$PROG: Incorrect operand. Format: $PROG device" >&2 exit 1 fi if [ "$USER" != "root" ]; then echo "$PROG: Need to be root." >&2 exit 1 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; done if [ $FOUND == 1 ]; then # 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 fi done # Si ha cambiado la configuración, reiniciar DHCP. if [ $CHANGE == 1 ]; then for f in /etc/init.d/{isc-dhcp-server,dhcp3-server,dhcpd}; do [ -x $f ] && $f restart done else echo "Don't change the DHCP configuration." fi # Comprobar si hay que modificar la configuración de OpenGnsys. OPENGNSYS=/opt/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 echo "$PROG: File $file does not exist." >&2 exit 2 fi cfg=$OPENGNSYS/$f if [ ! $cfg -ef $file ]; then ln -f $file $cfg 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. 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)" else echo "Don't change the default interface: $1" fi else echo "$PROG: Network device not found. Format: $PROG device" >&2 exit 1 fi