source: client/boot-tools/includes/etc/initramfs-tools/scripts/ogfunctions @ ea0b6cf

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since ea0b6cf was b4a2555, checked in by ramon <ramongomez@…>, 12 years ago

Recuperar ficheros que no corresponden con el cambio de la revisión r3501.

git-svn-id: https://opengnsys.es/svn/branches/version1.0@3502 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 19.2 KB
RevLine 
[00a2c2c]1#@file    ogfunctions.lib
[841ce50]2#@brief   Librería o clase para la gestion del sistema operativo de los clientes OpenGnsys
[00a2c2c]3#@class   client
[841ce50]4#@brief   Librería o clase para la gestion del sistema operativo de los clientes OpenGnsys
[00a2c2c]5#@version 0.91
6#@warning License: GNU GPLv3+
7
[841ce50]8#/**
9#        ogExportKernelParameters
10#@brief   Exporta los parametros pasados al kernel
11#@param   
12#@return 
13#@exception OG_ERR_FORMAT    Formato incorrecto.
14#@version 0.7 -
15#@author Antonio J. Doblas. Universidad de Malaga.
16#@date    2010/05/24
17#*/ ##
[00a2c2c]18ogExportKernelParameters ()
19{
20        GLOBAL="cat /proc/cmdline"
21        for i in `${GLOBAL}`
22        do
23                echo $i | grep "=" > /dev/null && export $i
24        done
[841ce50]25        return 0
[00a2c2c]26}
27
[841ce50]28#/**
29#       ogExportVarEnvironment
30#@brief   Exporta las variables usadas en el proceso de inicio OpenGnsys y las almacena en /tmp
31#@param   
32#@return 
33#@exception OG_ERR_FORMAT    Formato incorrecto.
34#@version 0.9
35#@author Antonio J. Doblas. Universidad de Malaga.
36#@date    2011/05/24
37#*/ ##
[00a2c2c]38ogExportVarEnvironment ()
39{
40        export CFGINITRD="/tmp/initrd.cfg"     
41        OGPROTOCOL="${ogprotocol:-smb}"
42        case "$OGPROTOCOL" in
43                nfs|NFS)                       
44                        export SRCOGLIVE="/var/lib/tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD       
45                        export SRCOGSHARE="/opt/opengnsys/client" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD
46                        export SRCOGLOG="/opt/opengnsys/log/clients" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD
47                        export SRCOGIMAGES="/opt/opengnsys/images" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD     
48                ;;
49                smb|SMB|cifs|CIFS|samba|SAMBA)
50                        export OPTIONS=" -o user=opengnsys,pass=og"
51                        export SRCOGLIVE="tftpboot"  && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD
52                        export SRCOGSHARE="ogclient" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD
53                        export SRCOGLOG="oglog" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD     
54                        export SRCOGIMAGES="ogimages" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD
55                ;;
56                local|LOCAL)
57                        export SRCOGLIVE="local"
58                ;;
59        esac
60        #punto de acceso al boot-tools live
61        export DSTOGLIVE="/opt/oglive/tftpboot"
62        #punto de montaje para unionfs
63        export OGLIVERAMFS="/opt/oglive/ramfs" && echo "OGLIVERAMFS=$OGLIVERAMFS" >> $CFGINITRD
64        #punto de montaje donde se accede al 2nd FS mediante loop
65        export OGLIVEROOTFS="/opt/oglive/rootfs" && echo "OGLIVEROOTFS=$OGLIVEROOTFS" >> $CFGINITRD
66        #punto de union entre LOCALROOTIMG y LOCALROOTRAM
67        export OGLIVEUNIONFS="/opt/oglive/unionfs" && echo "OGLIVEUNIONFS=$OGLIVEUNIONFS" >> $CFGINITRD
68        #etiquta para los dispositivos offline
69        export OGLIVELABEL="ogClient"
70       
71        #echo "puntos de montajes para los demas accesos"
72        #echo "acceso al client, engine, scritps, interfaz"
73        export DSTOGSHARE="/opt/opengnsys" && echo "DSTOGSHARE=$DSTOGSHARE" >> $CFGINITRD               
74        export DSTOGLOG="/opt/opengnsys/log" && echo "DSTOGLOG=$DSTOGLOG" >> $CFGINITRD
75        export DSTOGIMAGES="/opt/opengnsys/images" && echo "DSTOGIMAGES=$DSTOGIMAGES" >> $CFGINITRD
76               
77        ##INFORMACION DE OTRAS VARIABLES OBTENDIAS EN OTRAS FUNCIONES ogConfigureNetwork.
78                #DEVICE
79                #IPV4DDR
80                #IPV4BROADCAST
81                #IPV4NETMASK
82                #IPV4GATEWAY
83                #HOSTNAME
84    #INFORMACION de otras variasbles obteneidas desde ogGetROOTSERVER
85                #ROOTSERVER  si ip=dhcp -> ROOTSERVER=NEXT-SERVER; si ip=host:rootserver:gw:mask:hostname:interfaz -> ROOTSERVER=rootserver
86                #BOOTIF -> si el gestor remoto es pxelinux.0 y se añade una linea más tipo "IPAPPEND 2" esta variable tendrá la mac de la interfaz.
87                #$OGSERVERLIVE
88                #$OGSERVERSHARE
89                #$OGSERVERLOG
90                #$OGSERVERIMAGES
91        return 0
92}
93
[841ce50]94
95#/**
96#       ogConfigureRamfs
97#@brief   Configura el initrd para adaptarlo al sistema raiz.
98#@param   
99#@return 
100#@exception OG_ERR_FORMAT    Formato incorrecto.
101#@version 0.9
102#@author Antonio J. Doblas. Universidad de Malaga.
103#@date    2010/05/24
104#*/ ##
[00a2c2c]105ogConfigureRamfs ()
106{
107        mkdir -p $DSTOGLIVE     
108        mkdir -p $OGLIVERAMFS   
109        mkdir -p $OGLIVEROOTFS                           
110        mkdir -p $OGLIVEUNIONFS
[43cbd03]111
112        touch /etc/fstab
[00a2c2c]113}
114
[841ce50]115
116#/**
117#       ogLoadNetModule
118#@brief   Carga en un demerminado modulo de red, requiere compilación previo del modulo
119#@param   
120#@return 
121#@exception OG_ERR_FORMAT    Formato incorrecto.
122#@version 0.9
123#@author Antonio J. Doblas. Universidad de Malaga.
124#@date    2010/05/24
125#*/ ##
[00a2c2c]126ogLoadNetModule ()
127{
128        if [ -n "$ognetmodule" ]
129        then
130                echo "Cargando modulo de red $netmodule"
131                insmod `find /lib/modules/ -name ${netmodule}*`
132        fi
133}
134
135
[841ce50]136#/**
137#      ogPostConfigureFS
138#@brief   Configura el sistema raiz, para independizarlo entre los clientes.
139#@param   
140#@return 
141#@exception OG_ERR_FORMAT    Formato incorrecto.
142#@version 0.9
143#@author Antonio J. Doblas. Universidad de Malaga.
144#@date    2010/05/24
145#*/ ##
[00a2c2c]146ogPostConfigureFS()
147{
148        # configuramos el /etc/hostname.
149        echo $HOSTNAME > /etc/hostname
150       
151        #configuramos el /etc/hosts
152        echo "127.0.0.1 localhost" > /etc/hosts
153        echo "$IPV4ADDR $HOSTNAME" >> /etc/hosts
154       
155        #configuramos el host.conf
156        echo "order hosts,bind" > /etc/host.conf
157        echo "multi on" >> /etc/host.conf
158       
[ac8b8f58]159        #configuramos el dns anterior ubuntu 12.04
160        #####echo "nameserver $ogdns" > /etc/resolv.conf
161        #configuramos el dns posterior ubuntu 12.04
162        #####echo "nameserver $ogdns" > /etc/resolvconf/resolv.conf.d/tail     
[b4a2555]163        [ -n "${ogdns}" ]  && mkdir -p /run/resolvconf
164        [ -n "${ogdns}" ]  && touch /run/resolvconf/resolv.conf
165        [ -n "${ogdns}" ] && echo "nameserver $ogdns" > /run/resolvconf/resolv.conf
[00a2c2c]166       
[0798481]167        #configuramos el uso del servicio http proxy
[51d437e]168        [ -n "${ogproxy}" ] && export http_proxy="$ogproxy"     
[00a2c2c]169       
170        # configuramos el /etc/networks
171        #read -e NETIP NETDEFAULT <<<$(route -n | grep eth0 | awk -F" " '{print $1}')
172        NETIP=$(route -n | grep eth0 | awk -F" " '{print $1}') && NETIP=$(echo $NETIP | cut -f1 -d" ")
173        echo "default 0.0.0.0" > /etc/networks
174        echo "loopback 127.0.0.0" >> /etc/networks
175        echo "link-local 169.254.0.0" >> /etc/networks
176        echo "localnet $NETIP" >> /etc/networks
177        #route
178
[841ce50]179        #echo "ogLive1.0.2" > /etc/debian_chroot
[00a2c2c]180
181        #enlace si iniciamos desde ogprotocolo=local { cdrom, usb, cache } .
182    # monta el raiz del dispositivo local en /opt/og2fs/tftpboot  - acceso al fichero .sqfs
183    # y monta el sistema root sqfs en /opt/og2fs/2ndfs
184        [ "$LOCALMEDIA" == "CACHE" ] && ln -s $DSTOGLIVE /opt/opengnsys/cache
185        [ "$ogprotocol" == "local" ] &&  ln -s ${OGLIVEROOTFS}/opt/opengnsys/* /opt/opengnsys/
186
[841ce50]187    #Montamos un directorio temporal para el apt-get
188    mount tmpfs /var/cache/apt/archives -t tmpfs -o size=15M
189    mkdir -p /var/cache/apt/archives/partial
[00a2c2c]190
191}
192
193
[841ce50]194#/**
195#     ogGetROOTSERVER
196#@brief   Determina los puntos de accesos a los distintos recursos.
[00a2c2c]197#Requiere ogConfigureNetworking.
198#Exporta ROOTSERVER
199# si la red ha sido configurada con dhcp el valor de ROOTSERVER será el valor de next-server del dhcp
200# si la red ha sido configurada con el parametro de kernel ip, será el segundo valor.
[841ce50]201## ip=iphost:ipnext-server:ipgateway:netmask:hostname:iface:none
202## ip=172.17.36.21:62.36.225.150:172.17.36.254:255.255.255.0:prueba1:eth0:none
203#@param   
204#@return 
205#@exception OG_ERR_FORMAT    Formato incorrecto.
206#@version 0.9
207#@author Antonio J. Doblas. Universidad de Malaga.
208#@date    2010/05/24
209#*/ ##
[00a2c2c]210ogGetROOTSERVER ()
211{
212        # get nfs root from dhcp
213        if [ "x${NFSROOT}" = "xauto" ]; then
214                # check if server ip is part of dhcp root-path
215                if [ "${ROOTPATH#*:}" = "${ROOTPATH}" ]; then
216                        NFSROOT=${ROOTSERVER}:${ROOTPATH}
217                else
218                        NFSROOT=${ROOTPATH}
219                fi
220
221        # nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
222        elif [ -n "${NFSROOT}" ]; then
223                # nfs options are an optional arg
224                if [ "${NFSROOT#*,}" != "${NFSROOT}" ]; then
225                        NFSOPTS="-o ${NFSROOT#*,}"
226                fi
227                NFSROOT=${NFSROOT%%,*}
228                if [ "${NFSROOT#*:}" = "$NFSROOT" ]; then
229                        NFSROOT=${ROOTSERVER}:${NFSROOT}
230                fi
231        fi
232        export ROOTSERVER
233        echo "ROOTSERVER=$ROOTSERVER" >> $CFGINITRD
234       
235        #si oglive no oglive=R
[82ae131]236        export OGSERVERIMAGES="${ogrepo:-$ROOTSERVER}" && echo "OGSERVERIMAGES=$OGSERVERIMAGES" >> $CFGINITRD
237        export OGSERVERSHARE="${ogshare:-$ROOTSERVER}" && echo "OGSERVERSHARE=$OGSERVERSHARE" >> $CFGINITRD
238        export OGSERVERLOG="${oglog:-$ROOTSERVER}" && echo "OGSERVERLOG=$OGSERVERLOG" >> $CFGINITRD
239        export OGSERVERLIVE="${oglive:-$OGSERVERIMAGES}" && echo "OGSERVERLIVE=$OGSERVERLIVE" >> $CFGINITRD
240               
[00a2c2c]241        return 0
242}
243
[841ce50]244
245
[82ae131]246#       ogUpdateInitrd
247#@brief   Actualiza el intird de la cache desde el servidor. Si el arranque ha disdo desde cache, compueba desde el servidor nueva version del initird.
248#@param1
249#@return 
250#@exception OG_ERR_FORMAT    Formato incorrecto.
251#@version 0.9
252#@author Antonio J. Doblas. Universidad de Malaga.
253#@date    2011/05/24
254#*/ ##
255
256ogUpdateInitrd ()
257{
258        cd /tmp
259        mkdir /tmp/cache
[802fcc6]260        TYPE=$(blkid | grep CACHE | awk -F"TYPE=" '{print $2}' | tr -d \")
261        mount -t $TYPE LABEL=CACHE /tmp/cache || return
[82ae131]262        mkdir /tmp/cache/boot
263       
264       
265        # comparamos los del server
266        busybox tftp -g -r ogvmlinuz.sum $ROOTSERVER
267        busybox tftp -g -r oginitrd.img.sum $ROOTSERVER
268        SERVERVMLINUZ=`cat ogvmlinuz.sum`
269        SERVERINITRD=`cat oginitrd.img.sum`
270
271       
272        #comparamos los de la cache
273        CACHEVMLINUZ=`cat /tmp/cache/boot/ogvmlinuz.sum`
274        CACHEINITRD=`cat /tmp/cache/boot/oginitrd.img.sum`
275       
276        echo "MD5 on SERVER: $SERVERVMLINUZ $SERVERINITRD"
277        echo "MD5  on CACHE: $CACHEVMLINUZ $CACHEINITRD"
278       
279        cd /tmp/cache/boot
280       
281        if [ "$CACHEVMLINUZ" != "$SERVERVMLINUZ" ]
282        then           
283                echo "ogvmlinuz updating"
284                busybox tftp -g -r ogvmlinuz $ROOTSERVER
285                busybox tftp -g -r ogvmlinuz.sum $ROOTSERVER
286                DOREBOOT=true
287        fi
288        if [ "$CACHEINITRD" != "$SERVERINITRD" ]
289        then
290                echo "oginitrd updating"
291                busybox tftp -g -r oginitrd.img $ROOTSERVER
292                busybox tftp -g -r oginitrd.img.sum $ROOTSERVER
293                DOREBOOT=true
294        fi
295
296        cd /; umount /tmp/cache
297
[47e0819]298        [ "$DOREBOOT" == "true" ] && reboot -f
[82ae131]299
300}
301
[841ce50]302#/**
303#       ogConnect
304#@brief   Conecta con los recursos necesarios para opengnsys
305#@param1 ip del servidor TODO:dns
306#@param2 protocolo
307#@param3 punto de acceso remoto
308#@param4  punto de montaje local
309#@param5 acceso de lectura tipo ",ro"
310#@return 
311#@exception OG_ERR_FORMAT    Formato incorrecto.
312#@version 0.9
313#@author Antonio J. Doblas. Universidad de Malaga.
314#@date    2011/05/24
315#*/ ##
316   
[00a2c2c]317ogConnect ()
318{
319        SERVER=$1
320        PROTOCOL=$2
321        SRC=$3
322        DST=$4
323        READONLY=$5
324       
325        case "$PROTOCOL" in
326                nfs)
[802fcc6]327                        nfsmount  ${SERVER}:${SRC} ${DST} -o nolock${READONLY} 2> /dev/null || mount.nfs ${SERVER}:${SRC} ${DST} -o nolock${READONLY}
[00a2c2c]328                ;;
329                smb)
330                        mount.cifs //${SERVER}/${SRC} ${DST} ${OPTIONS}${READONLY}             
331                ;;
332        esac
333}
[841ce50]334
335
336#/**
337#       ogConnectOgLive
338#@brief   Conecta con el recurso para usar el sistema raiz externo, remoto o local
339#@param1
340#@return 
341#@exception OG_ERR_FORMAT    Formato incorrecto.
342#@version 0.9
343#@author Antonio J. Doblas. Universidad de Malaga.
344#@date    2011/05/24   
[00a2c2c]345ogConnectOgLive ()
346{
347# Si ogprotocol=local, la funcion ogExportVar => SRCOGLIVE=local
348        if [ "$SRCOGLIVE" == "local" ]
349        then           
350                echo  "Montar imagen del sistema root desde dispositivo local"
351                for i in $(blkid /dev/s* | grep $OGLIVELABEL  | awk -F: '{print $2}' | tr -d \"); do export $i; done
[43cbd03]352                # si local usb| cd con partcion es identificada como label $OGLIVELABEL         
353                mount -t $TYPE LABEL=$OGLIVELABEL $DSTOGLIVE 
[00a2c2c]354                if [ $? != 0 ]
355                then
[43cbd03]356                        # Si local es particion CACHE es identificada como CACHE
[802fcc6]357                        mount LABEL=CACHE $DSTOGLIVE
[00a2c2c]358                        export LOCALMEDIA=CACHE
359                fi
360        else
361# Si ogprotocol es remoto.    TODO en smb rw y en nfs ro??
362        ogConnect $OGSERVERLIVE $OGPROTOCOL $SRCOGLIVE $DSTOGLIVE               
363        fi             
364# Si el montaje ha sido correcto, tanto en local como en remoto. Procedemos con la union
365        ogMergeLive
366}
367
368
[841ce50]369#/**
370#       ogMergeLive
371#@brief   Metafuncion para fusionar el initrd con el sistema raiz.
372#@param1
373#@return 
374#@exception OG_ERR_FORMAT    Formato incorrecto.
375#@version 0.9
376#@author Antonio J. Doblas. Universidad de Malaga.
377#@date    2011/05/24   
[00a2c2c]378ogMergeLive()
379{
380#Si existe en el punto de acceso del del oglive el fichero ogclient.sqfs       
381if [ -f $DSTOGLIVE/ogclient/ogclient.sqfs ]
382then   
383        cat /proc/mounts > /tmp/mtab.preunion
384        if [ "$og2nd" == "img" ]
385        then
386                #Montamos el ROOTFS tipo  img, para desarrolladores
[82ae131]387                #TODO: comprobar que se tiene acceso de escritura
[00a2c2c]388                losetup /dev/loop0 $DSTOGLIVE/ogclient/ogclient.img -o 32256
389                mount /dev/loop0 $OGLIVEROOTFS
390        else
391                ## Montamos el ROOTFS tipo squashfs
392                mount $DSTOGLIVE/ogclient/ogclient.sqfs $OGLIVEROOTFS -t squashfs -o loop
393        fi
394# Realizamos la union entre el ogliveram(initrd) y el ogliverootfs(ogclient.sqfs)       
395        for i in etc var lib bin sbin usr root boot; do
396                ogUnionLiveDir $i
397        done
398        cat /tmp/mtab.preunion > /etc/mtab
399else
400        echo "Fichero imagen del cliente no encontrado"
401        return 1
402fi
403}
404
405
406
[841ce50]407#/**
408#       ogUnionLiveDir
409#@brief  fusiona dos directorios con unionfs
410#@param1
411#@return 
412#@exception OG_ERR_FORMAT    Formato incorrecto.
413#@version 0.9
414#@author Antonio J. Doblas. Universidad de Malaga.
415#@date    2011/05/24
[00a2c2c]416ogUnionLiveDir()
417{
418        TMPDIR=/$1              #dir
419        FUSE_OPT="-o default_permissions -o allow_other -o use_ino -o nonempty -o suid"
420        UNION_OPT="-o cow -o noinitgroups"
421        UBIN="unionfs-fuse"
422
423        mkdir -p $OGLIVERAMFS$TMPDIR
424        U1STDIR="${OGLIVERAMFS}${TMPDIR}=RW"
425        U2NDDIR="${OGLIVEROOTFS}${TMPDIR}=RO"
426        UNIONDIR=${OGLIVEUNIONFS}${TMPDIR}
427        mkdir -p $UNIONDIR
428        $UBIN $FUSE_OPT $UNION_OPT ${U1STDIR}:${U2NDDIR} $UNIONDIR
429        mount --bind  $UNIONDIR $TMPDIR
430}
431
432
433
[841ce50]434#/**
435#     ogConfigureLoopback
436#@brief   Configura la interfaz loopback para cliente torrent
437#@param   
438#@return 
439#@exception OG_ERR_FORMAT    Formato incorrecto.
440#@version 0.9   Usando funciones generales de ubuntu
441#@author Antonio J. Doblas. Universidad de Malaga.
442#@date    2010/05/24
443#@version 1.0.1   Deteccion automatica de interfaz con enlace activo.
444#@author Antonio J. Doblas. Universidad de Malaga.
445#@date    2011/05/24
446#*/ ##
[00a2c2c]447ogConfigureLoopback()
448{
[841ce50]449        # for the portmapper we need localhost
450        ifconfig lo 127.0.0.1
451        #/etc/init.d/portmap start
[00a2c2c]452}
453
[841ce50]454#/**
455#    ogConfigureNetworking
456#@brief   Configura la interfaz de red usada en el pxe
457#@param   
458#@return 
459#@exception OG_ERR_FORMAT    Formato incorrecto.
460#@version 0.9
461#@author Antonio J. Doblas. Universidad de Malaga.
462#@date    2010/05/24
463#*/ ##
[00a2c2c]464ogConfigureNetworking()
465{
466#echo "ogConfigureNetworking: Buscando interfaz a configurar DEVICE"
467if [ -n "${BOOTIF}" ]
468then
469        #echo " variable BOOTIF exportada con pxelinux.0 con valor $BOOTIF"
470        IP=$IPOPTS
471        temp_mac=${BOOTIF#*-}
472        # convert to typical mac address format by replacing "-" with ":"
473        bootif_mac=""
474        IFS='-'
475        for x in $temp_mac ; do
476                if [ -z "$bootif_mac" ]; then
477        bootif_mac="$x"
478        else
479                bootif_mac="$x:$bootif_mac"
480        fi
481        done
482        unset IFS
483        # look for devices with matching mac address, and set DEVICE to
484        # appropriate value if match is found.
485        for device in /sys/class/net/* ; do
486                if [ -f "$device/address" ]; then
487                        current_mac=$(cat "$device/address")
488                        if [ "$bootif_mac" = "$current_mac" ]; then
489                                DEVICE=${device##*/}
490                                break
491                        fi
492                fi
493        done
494else
495        #echo "variable BOOTIF no exportada, intentamos detectar que interfaz se ha iniciado"
496        IP=$ip
497        #TODO Detectar que interfaz se ha iniciado
[b4a2555]498        case ${IP} in
[00a2c2c]499                none|off)
[b4a2555]500           return 0
501        ;;
502        ""|on|any)
503          # Bring up device
504          DEVICE=eth0
505        ;;
506        dhcp|bootp|rarp|both)
507          DEVICE=eth0
508        ;;
509        *)
510          DEVICE=`echo $IP | cut -f6 -d:`
511        ;;
[00a2c2c]512        esac
513fi
514if [ -z "${DEVICE}" ]; then
515        echo "variable DEVICE con valor $DEVICE no encontrada, llamamos de nuevo a ogconfigure_networking"
516        ogConfigureNetworking
517fi
518
[b4a2555]519[ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ] && return 0
520#if [ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ]; then
521#       echo "variable DEVICE con valor $DEVICE  y fichero /tmp/net-$DEVICE encontrados"
[00a2c2c]522#       return 0
523#else
[b4a2555]524#       echo "variable DEVICE con valor $DEVICE encontrada, procedemos a configurala y a crear el fichero /tmp/net-$DEVICE"
[00a2c2c]525#fi
526
527# Activamos la interfaz antes de configurar.
528ip address flush $DEVICE
529ip link set dev $DEVICE up
530# Si no se detecta señal portadora volver a configurar.
531sleep 1
532CARRIER=$(cat /sys/class/net/${DEVICE}/carrier)
533if [ "$CARRIER" != "1" ]
534then
535        ogConfigureNetworking
536fi
537
538# support ip options see linux sources
539# Documentation/filesystems/nfsroot.txt
540# Documentation/frv/booting.txt
541for ROUNDTTT in 2 3 4 6 9 16 25 36 64 100; do
542        # The NIC is to be configured if this file does not exist.
543        # Ip-Config tries to create this file and when it succeds
544        # creating the file, ipconfig is not run again.
[b4a2555]545        if [ -e /tmp/net-"${DEVICE}".conf ]; then
[00a2c2c]546                break;
547        fi
[b4a2555]548        case ${IP} in
[00a2c2c]549                none|off)
550                        return 0
551                ;;
552                ""|on|any)
553                        # Bring up device
554                        echo "Setting $DEVICE  with option:on|any and Variable IP= $IP: ipconfig -t ${ROUNDTTT} ${DEVICE} "
555                        ipconfig -t ${ROUNDTTT} ${DEVICE}
556                ;;
557                dhcp|bootp|rarp|both)
558                        echo "Setting $DEVICE with option:dhcp|bootp|rarp|both and Variable IP=  $IP: ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE} "
559                        ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE}
560                ;;
561                *)
562                        echo "Setting $DEVICE with option *  and Variable IP= $IP: ipconfig -t ${ROUNDTTT} -d $IP  "
563                        ipconfig -t ${ROUNDTTT} -d $IP
564                        # grab device entry from ip option
565                        NEW_DEVICE=${IP#*:*:*:*:*:*}
566                        if [ "${NEW_DEVICE}" != "${IP}" ]; then
567                                NEW_DEVICE=${NEW_DEVICE%:*}
568                        else
569                                # wrong parse, possibly only a partial string
570                                NEW_DEVICE=
571                        fi
572                        if [ -n "${NEW_DEVICE}" ]; then
573                                DEVICE="${NEW_DEVICE}"
574                        fi
575                ;;
576        esac
577done
578
579# source ipconfig output
580if [ -n "${DEVICE}" ]; then     
[b4a2555]581    . /tmp/net-${DEVICE}.conf
582    DEVICECFG="/tmp/net-${DEVICE}.conf"
583        export DEVICECFG
[00a2c2c]584        export DEVICE
585        echo "DEVICE=$DEVICE" >> $CFGINITRD
586        echo "DEVICECFG=$DEVICECFG" >> $CFGINITRD
[b4a2555]587        echo "exportando variable DEVICE con valor = $DEVICE y el DEVICECFG con valor $DEVICECFG"   
[00a2c2c]588else
[b4a2555]589    # source any interface as not exaclty specified
590    . /tmp/net-*.conf
[00a2c2c]591fi
592}
593
594
[841ce50]595#/**
596#    ogYesNo
597#@brief   Gestion de peticiones de usuario en modo ogdebug=true
598#@param1  OPTIONS    --timeout N    --default ANSWER
599#@param1 Questions   
600#@return  1=yes 0=no
601#@exception OG_ERR_FORMAT    Formato incorrecto.
602#@version 0.9
603#@author: 
[b0d505f6]604#@date    2010/05/24
[841ce50]605#*/ ##
[00a2c2c]606ogYesNo()
607{
608    local ans
609    local ok=0
610    local timeout=0
611    local default
612    local t
613
614    while [[ "$1" ]]
615    do
616        case "$1" in
617        --default)
618            shift
619            default=$1
620            if [[ ! "$default" ]]; then error "Missing default value"; fi
621            t=$(echo $default | tr '[:upper:]' '[:lower:]')
622
623            if [[ "$t" != 'y'  &&  "$t" != 'yes'  &&  "$t" != 'n'  &&  "$t" != 'no' ]]; then
624                error "Illegal default answer: $default"
625            fi
626            default=$t
627            shift
628            ;;
629
630        --timeout)
631            shift
632            timeout=$1
633            if [[ ! "$timeout" ]]; then error "Missing timeout value"; fi
634            #if [[ ! "$timeout" =~ ^[0-9][0-9]*$ ]]; then error "Illegal timeout value: $timeout"; fi
635            shift
636            ;;
637
638        -*)
639            error "Unrecognized option: $1"
640            ;;
641
642        *)
643            break
644            ;;
645        esac
646    done
647
648    if [[ $timeout -ne 0  &&  ! "$default" ]]; then
649        error "Non-zero timeout requires a default answer"
650    fi
651
652    if [[ ! "$*" ]]; then error "Missing question"; fi
653
654    while [[ $ok -eq 0 ]]
655    do
656        if [[ $timeout -ne 0 ]]; then
657            if ! read -t $timeout -p "$*" ans; then
658                ans=$default
659            else
660                # Turn off timeout if answer entered.
661                timeout=0
662                if [[ ! "$ans" ]]; then ans=$default; fi
663            fi
664        else
665            read -p "$*" ans
666            if [[ ! "$ans" ]]; then
667                ans=$default
668            else
669                ans=$(echo $ans | tr '[:upper:]' '[:lower:]')
670            fi
671        fi
672
673        if [[ "$ans" == 'y'  ||  "$ans" == 'yes'  ||  "$ans" == 'n'  ||  "$ans" == 'no' ]]; then
674            ok=1
675        fi
676
677        if [[ $ok -eq 0 ]]; then warning "Valid answers are: yes y no n"; fi
678    done
679    [[ "$ans" = "y" || "$ans" == "yes" ]]
[841ce50]680}
681 
Note: See TracBrowser for help on using the repository browser.