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 | # Variables globales. |
---|
11 | PROG="$(basename $0)" |
---|
12 | MYCNF=/tmp/.my.cnf.$$ |
---|
13 | |
---|
14 | # Comprobar parámetros. |
---|
15 | if [ $# -ne 1 ]; then |
---|
16 | echo "$PROG: Incorrect operand. Format: $PROG device" >&2 |
---|
17 | exit 1 |
---|
18 | fi |
---|
19 | if [ "$USER" != "root" ]; then |
---|
20 | echo "$PROG: Need to be root." >&2 |
---|
21 | exit 1 |
---|
22 | fi |
---|
23 | |
---|
24 | # Detectar la interfaz de red. |
---|
25 | DEVICES=$(ip -o link show up|awk -F: '$2!~/lo/ {print $2}') |
---|
26 | FOUND=0 |
---|
27 | for dev in $DEVICES; do |
---|
28 | [ "$dev" == "$1" ] && FOUND=1; |
---|
29 | done |
---|
30 | |
---|
31 | if [ $FOUND == 1 ]; then |
---|
32 | # Comprobar si hay que modificar la configuración de DHCP. |
---|
33 | CHANGE=0 |
---|
34 | for f in /etc/{dhcp,dhcp3}/dhcpd.conf; do |
---|
35 | file="${f/./-$1.}" |
---|
36 | if [ -f $file -a ! $f -ef $file ]; then |
---|
37 | ln -f $file $f |
---|
38 | CHANGE=1 |
---|
39 | fi |
---|
40 | done |
---|
41 | # Si ha cambiado la configuración, reiniciar DHCP. |
---|
42 | if [ $CHANGE == 1 ]; then |
---|
43 | for f in /etc/init.d/{isc-dhcp-server,dhcp3-server,dhcpd}; do |
---|
44 | [ -x $f ] && $f restart |
---|
45 | done |
---|
46 | else |
---|
47 | echo "Don't change the DHCP configuration." |
---|
48 | fi |
---|
49 | # Comprobar si hay que modificar la configuración de OpenGnsys. |
---|
50 | OPENGNSYS=/opt/opengnsys |
---|
51 | CHANGE=0 |
---|
52 | for f in etc/{ogAdmServer,ogAdmRepo,ogAdmAgent}.cfg www/controlacceso.php client/etc/ogAdmClient.cfg; do |
---|
53 | file="$OPENGNSYS/${f/./-$1.}" |
---|
54 | if [ ! -f $file ]; then |
---|
55 | echo "$PROG: File $file does not exist." >&2 |
---|
56 | exit 2 |
---|
57 | fi |
---|
58 | cfg=$OPENGNSYS/$f |
---|
59 | if [ ! $cfg -ef $file ]; then |
---|
60 | ln -f $file $cfg |
---|
61 | CHANGE=1 |
---|
62 | fi |
---|
63 | done |
---|
64 | # Si ha cambiado la configuración, reiniciar OpenGnSys y actualizar la BD. |
---|
65 | if [ $CHANGE == 1 ]; then |
---|
66 | /etc/init.d/opengnsys restart |
---|
67 | source $OPENGNSYS/etc/ogAdmServer.cfg |
---|
68 | # Componer fichero con credenciales de conexión. |
---|
69 | touch $MYCNF |
---|
70 | chmod 600 $MYCNF |
---|
71 | cat << EOT > $MYCNF |
---|
72 | [client] |
---|
73 | user=$USUARIO |
---|
74 | password=$PASSWORD |
---|
75 | EOT |
---|
76 | # Ejecutar actualización y borrar fichero de credenciales. |
---|
77 | mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -e \ |
---|
78 | "UPDATE entornos SET ipserveradm='$ServidorAdm' WHERE identorno=1" |
---|
79 | rm -f $MYCNF |
---|
80 | echo "Default server interface set to: $1 ($ServidorAdm)" |
---|
81 | else |
---|
82 | echo "Don't change the default interface: $1" |
---|
83 | fi |
---|
84 | else |
---|
85 | echo "$PROG: Network device not found. Format: $PROG device" >&2 |
---|
86 | exit 1 |
---|
87 | fi |
---|
88 | |
---|