source: server/bin/setserveraddr @ 9453355

configure-oglivelgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacion
Last change on this file since 9453355 was c28eefa, checked in by Natalia Serrano <natalia.serrano@…>, 20 months ago

Log to syslog in a number of shell scripts

  • Property mode set to 100755
File size: 4.9 KB
RevLine 
[c8fd992]1#!/bin/bash
2
[df7d8f0]3#/**
4#@file    setserveraddr
[e020339]5#@brief   Assign default IP address to OpenGnsys services.
[995b512]6#@usage   setserveraddr { IPAddress | NetIface }
7#@param   IPAddress  IP address assigned to a network interface
8#@param   NetIface   network interface name defined by the operating system
[df7d8f0]9#@version Initial version.
10#@author  Ramón M. Gómez - ETSII Univ. Sevilla
11#@date    2011-01-25
12#@version 1.0.5 - Regenerate configuration files.
13#@author  Ramón M. Gómez - ETSII Univ. Sevilla
14#@date    2014-06-06
[e020339]15#@version 1.1.1 - Updating menu URLs and PXE files.
[df7d8f0]16#@author  Ramón M. Gómez - ETSII Univ. Sevilla
17#@date    2018-11-15
18#*/ ##
19
20
21# Variables.
[c28eefa]22PROG=$(basename $0)
[995b512]23OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
[e020339]24PXEDIRS="$OPENGNSYS/tftpboot/menu.lst $OPENGNSYS/tftpboot/grub"
[df7d8f0]25DEFAULTFILE=/etc/default/opengnsys
26
[e020339]27# Functions.
[995b512]28source $OPENGNSYS/lib/ogfunctions.sh || exit 1
[c8fd992]29
[995b512]30# Show help or version number.
31[ "$*" == "help" ] && help
32[ "$*" == "version" ] && version
[e020339]33# Checking parameters.
34[ "$USER" != "root" ] && raiseError access "Need to be root"
35[ $# -ne 1 ] && raiseError usage
36[ -r $DEFAULTFILE ] || raiseError access "Cannot read default configuration file"
37for f in $OPENGNSYS/{etc/{ogAdmServer,ogAdmRepo,ogAdmAgent}.cfg,www/controlacceso.php,client/etc/ogAdmClient.cfg}; do
38        [ -w $f ] || raiseError access "Cannot write to file: $f"
39done
[8f70b5b]40
[df7d8f0]41# Detecting network interfaces.
42DEVICES=$(ip -o link show up | awk -F: '$2!~/lo/ {print $2}')
[8f70b5b]43for DEV in $DEVICES; do
[df7d8f0]44        # If the network interface is found, get its IP address.
45        IP=$(ip -o addr show dev "$DEV" | awk '$3~/inet$/ {sub (/\/.*/, ""); print ($4)}')
46        if [ "$DEV" == "$1" ] || [ "$IP" == "$1" ]; then
47                SERVERIP="$IP"
48                SERVERDEV="$DEV"
49        fi
[c8fd992]50done
51
[df7d8f0]52# Checking if IP address has been detected.
[8f70b5b]53if [ -n "$SERVERIP" ]; then
[e020339]54        # Showing warning to inform that initiated clients may hang.
55        read -rp "WARNING: initiated clients can hang. Continue? (y/n): " ANSWER
[940b1c7f]56        [ "${ANSWER,,}" != "y" ] && raiseError cancel "Do nothing"
[df7d8f0]57        # Temporary files.
[8f70b5b]58        tmpfile=$(mktemp /tmp/og.XXXXX)
[995b512]59        trap "rm -f $tmpfile" 1 2 3 6 9 15
[8f70b5b]60
[df7d8f0]61        # Checking whether the DHCP settings need to be changed.
[c8fd992]62        CHANGE=0
[8f70b5b]63        for f in /etc/{dhcp,hcp3}/dhcpd.conf; do
64                if [ -f $f ]; then
[df7d8f0]65                        # Changing DHCP "next-server" parameter.
66                        file="${f/./-$SERVERDEV.}"
[e0314d93]67                        sed -e "s/next-server.*/next-server $SERVERIP;/" \
68                            -e "s/option routers ;/option routers ${SERVERIP%.*}.1;/" $file >$tmpfile
[df7d8f0]69                        # Copying and linking file if there are changes.
[67d0d8c]70                        if [ ! $f -ef $file ] || ! diff -q $tmpfile $file &>/dev/null; then
[8f70b5b]71                                mv $tmpfile $file
72                                chmod 644 $file
73                                ln -f $file $f
74                                CHANGE=1
75                        fi
[c8fd992]76                fi
77        done
[df7d8f0]78        # Restarting DHCP service if its configuration has changed.
[c8fd992]79        if [ $CHANGE == 1 ]; then
[6640e2cf]80                for s in isc-dhcp-server dhcp3-server dhcpd; do
81                        restart $s &>/dev/null && break
[c8fd992]82                done
83        else
[c28eefa]84                echolog "DHCP configuration has not changed."
[c8fd992]85        fi
[8f70b5b]86
[df7d8f0]87        # Saving old IP address.
[e020339]88        source $OPENGNSYS/etc/ogAdmServer.cfg
89        OLDSERVERIP=$ServidorAdm
[df7d8f0]90        # Checking if configuration files need to be modified.
[c8fd992]91        CHANGE=0
[8f70b5b]92        for f in $OPENGNSYS/{etc/{ogAdmServer,ogAdmRepo,ogAdmAgent}.cfg,www/controlacceso.php,client/etc/ogAdmClient.cfg}; do
[e020339]93                # Updating configuration variables (if URL does not contain "localhost").
94                sed -e "s,\(ServidorAdm\|IPlocal\)=.*,\1=$SERVERIP," \
[9d3b079]95                    -e "s,^INTERFACE=.*,INTERFACE=$SERVERDEV," \
[f535be9]96                    -e "s,UrlMenu=https?://\([^/]*\)/\(.*\),UrlMenu=https://$SERVERIP/\2," \
[4079733]97                    -e '/localhost/!s,https\?://[^/]*/\(.*\),https://'$SERVERIP'/\1,' $f >$tmpfile
[df7d8f0]98                file="${f/./-$SERVERDEV.}"
99                # Copying updated file, if needed.
[2cbfd3f]100                if [ ! $f -ef $file ] || ! diff -q $tmpfile $file &>/dev/null; then
101                        cp $tmpfile $file
[8f70b5b]102                        ln -f $file $f
[c8fd992]103                        CHANGE=1
104                fi
105        done
[8f70b5b]106
[df7d8f0]107        # Processing when something has changed.
[c8fd992]108        if [ $CHANGE == 1 ]; then
[df7d8f0]109                # Restart OpenGnsys services.
[c28eefa]110                echolog "Restarting services..."
[6640e2cf]111                restart opengnsys >/dev/null
[df7d8f0]112                source $DEFAULTFILE
113                # If OpenGnsys Server is active, updating the database.
114                if [ "$RUN_OGADMSERVER" == "yes" ]; then
[e020339]115                        # Updating IP addresses and menu URLs.
[995b512]116                        dbexec "
[e020339]117UPDATE entornos
118   SET ipserveradm='$SERVERIP'
119 WHERE identorno=1;
120UPDATE repositorios
121   SET ip='$SERVERIP'
122 WHERE ip='$OLDSERVERIP';
123UPDATE menus
124   SET htmlmenupub = REPLACE(htmlmenupub, '$OLDSERVERIP', '$SERVERIP'),
[995b512]125       htmlmenupri = REPLACE(htmlmenupri, '$OLDSERVERIP', '$SERVERIP');"
[df7d8f0]126                        # Updating all PXE files.
[e020339]127                        find $PXEDIRS -name "01-*" -exec sed -i -e "s/$OLDSERVERIP/$SERVERIP/g" {} \;
[df7d8f0]128                fi
[8f70b5b]129
[df7d8f0]130                # Showing manual task to do after execution.
[c28eefa]131                echolog "Default server interface set to: $SERVERDEV ($SERVERIP)"
[8f70b5b]132                cat << EOT
133
134Manual tasks:
[df7d8f0]135- Check DHCP configuration file and restart service, if needed.
136- Check PXE files.
[6640e2cf]137- Log-in as Web Console user:
[df7d8f0]138  - Check menu URLs.
[dde2db1]139- Note: Run "settoken" script to update authentication tokens.
[8f70b5b]140EOT
[c8fd992]141        else
[df7d8f0]142                # Showing message if nothing changes.
[c28eefa]143                echolog "Default interface has not changed: $1"
[c8fd992]144        fi
145else
[df7d8f0]146        # Error if network interface is not found.
[e020339]147        raiseError notfound "Network device"
[c8fd992]148fi
149
[df7d8f0]150# Removing temporary files.
[995b512]151rm -f $tmpfile
[2cbfd3f]152
Note: See TracBrowser for help on using the repository browser.