| 1 | #!/bin/bash | 
|---|
| 2 | # setserveraddr: modifica los ficheros de configuración para asignar los valores | 
|---|
| 3 | #       de la interfaz de red solicitada. | 
|---|
| 4 | # Nota: se enlazan los ficheros a los predefinidos detectados para la interfaz. | 
|---|
| 5 | # Uso:  setserveraddr iface | 
|---|
| 6 | # Autor: Ramon Gomez - Univ. Sevilla | 
|---|
| 7 | # Fecha: 2011-01-25 | 
|---|
| 8 |  | 
|---|
| 9 |  | 
|---|
| 10 | # Comprobar parámetros. | 
|---|
| 11 | PROG="$(basename $0)" | 
|---|
| 12 | if [ $# -ne 1 ]; then | 
|---|
| 13 | echo "$PROG: Incorrect operand. Format: $PROG device" >&2 | 
|---|
| 14 | exit 1 | 
|---|
| 15 | fi | 
|---|
| 16 | if [ "$USER" != "root" ]; then | 
|---|
| 17 | echo "$PROG: Need to be root." >&2 | 
|---|
| 18 | exit 1 | 
|---|
| 19 | fi | 
|---|
| 20 |  | 
|---|
| 21 | # Detectar la interfaz de red. | 
|---|
| 22 | DEVICES=$(ip -o link show up|awk -F: '$2!~/lo/ {print $2}') | 
|---|
| 23 | FOUND=0 | 
|---|
| 24 | for dev in $DEVICES; do | 
|---|
| 25 | [ "$dev" == "$1" ] && FOUND=1; | 
|---|
| 26 | done | 
|---|
| 27 |  | 
|---|
| 28 | if [ $FOUND == 1 ]; then | 
|---|
| 29 | # Comprobar si hay que modificar la configuración de DHCP. | 
|---|
| 30 | CHANGE=0 | 
|---|
| 31 | for f in /etc/{dhcp,dhcp3}/dhcpd.conf; do | 
|---|
| 32 | file="${f/./-$1.}" | 
|---|
| 33 | if [ -f $file -a ! $f -ef $file ]; then | 
|---|
| 34 | ln -f $file $f | 
|---|
| 35 | CHANGE=1 | 
|---|
| 36 | fi | 
|---|
| 37 | done | 
|---|
| 38 | # Si ha cambiado la configuración, reiniciar DHCP. | 
|---|
| 39 | if [ $CHANGE == 1 ]; then | 
|---|
| 40 | for f in /etc/init.d/{isc-dhcp-server,dhcp3-server,dhcpd}; do | 
|---|
| 41 | [ -x $f ] && $f restart | 
|---|
| 42 | done | 
|---|
| 43 | else | 
|---|
| 44 | echo "Don't change the DHCP configuration." | 
|---|
| 45 | fi | 
|---|
| 46 | # Comprobar si hay que modificar la configuración de OpenGnsys. | 
|---|
| 47 | OPENGNSYS=/opt/opengnsys | 
|---|
| 48 | CHANGE=0 | 
|---|
| 49 | for f in etc/{ogAdmServer,ogAdmRepo,ogAdmAgent}.cfg www/controlacceso.php client/etc/ogAdmClient.cfg; do | 
|---|
| 50 | file="$OPENGNSYS/${f/./-$1.}" | 
|---|
| 51 | if [ ! -f $file ]; then | 
|---|
| 52 | echo "$PROG: File $file does not exist." >&2 | 
|---|
| 53 | exit 2 | 
|---|
| 54 | fi | 
|---|
| 55 | cfg=$OPENGNSYS/$f | 
|---|
| 56 | if [ ! $cfg -ef $file ]; then | 
|---|
| 57 | ln -f $file $cfg | 
|---|
| 58 | CHANGE=1 | 
|---|
| 59 | fi | 
|---|
| 60 | done | 
|---|
| 61 | # Si ha cambiado la configuración, reiniciar OpenGnSys y actualizar la BD. | 
|---|
| 62 | if [ $CHANGE == 1 ]; then | 
|---|
| 63 | /etc/init.d/opengnsys restart | 
|---|
| 64 | source $OPENGNSYS/etc/ogAdmServer.cfg | 
|---|
| 65 | mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \ | 
|---|
| 66 | "UPDATE entornos SET ipserveradm='$ServidorAdm' WHERE identorno=1" | 
|---|
| 67 | echo "Default server interface set to: $1 ($ServidorAdm)" | 
|---|
| 68 | else | 
|---|
| 69 | echo "Don't change the default interface: $1" | 
|---|
| 70 | fi | 
|---|
| 71 | else | 
|---|
| 72 | echo "$PROG: Network device not found. Format: $PROG device" >&2 | 
|---|
| 73 | exit 1 | 
|---|
| 74 | fi | 
|---|
| 75 |  | 
|---|