#!/bin/bash #/** #@file Net.lib #@brief Librería o clase Net #@class Net #@brief Funciones básicas de red. #@version 1.0.2 #@warning License: GNU GPLv3+ #*/ #/** # ogGetGroupDir [ str_repo ] #@brief Devuelve el cmaino del directorio para el grupo del cliente. #@param str_repo repositorio de imágenes (opcional) #@return path_dir - Camino al directorio del grupo. #@note repo = { REPO, CACHE } REPO por defecto #@exception OG_ERR_FORMAT formato incorrecto. #@version 1.0.2 - Primera versión para OpenGnSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2011-10-03 #*/ function ogGetGroupDir () { local REPO DIR GROUP if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME str_repo" \ "$FUNCNAME REPO ==> /opt/opengnsys/images/groups/Grupo1" return fi # Error si se recibe más de 1 parámetro. case $# in 0) REPO="REPO" ;; 1) REPO="$1" ;; *) ogRaiseError $OG_ERR_FORMAT "$*" return $? ;; esac GROUP="$(ogGetGroupName)" if [ -n "$GROUP" ]; then DIR=$(ogGetPath "$REPO" "/groups/$GROUP" 2>/dev/null) [ -d "$DIR" ] && echo "$DIR" fi } #/** # ogGetGroupName #@brief Devuelve el nombre del grupo al que pertenece el cliente. #@return str_group - Nombre de grupo. #@version 1.0.2 - Primera versión para OpenGnSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2011-10-03 #*/ function ogGetGroupName () { if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => Grupo1" return fi [ -n "$group" ] && echo "$group" } #/** # ogGetHostname #@brief Muestra el nombre del cliente. #@return str_host - nombre de máquina #@version 0.10 - Integración en OpenGnSys 0.10 #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2010-02-11 #*/ ## function ogGetHostname () { local HOST if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => pc1" return fi # Tomar nombre de la variable HOSTNAME HOST="$HOSTNAME" # Si no, tomar del DHCP, opción host-name /* (comentario para Doxygen) [ -z "$HOST" ] && HOST=$(awk -F\" '/option host-name/ {gsub(/;/,""); host=$2} END {print host} ' /var/lib/dhcp3/dhclient.leases) # Si no, leer el parámetro del kernel hostname (comentario para Doxygen) */ [ -z "$HOST" ] && HOST=$(awk 'BEGIN {RS=""; FS="="} $1~/hostname/ {print $2}' /proc/cmdline) [ "$HOSTNAME" != "$HOST" ] && export HOSTNAME="$HOST" [ -n "$HOST" ] && echo $HOST } #/** # ogGetNetInterface #@brief Muestra la interfaz de red del sistema #@return str_interface - interfaz de red #@version 1.0 - Integración OpenGnSys 0.10 Opengnsys 0.10-testing #@note Usa las variables utilizadas por el initrd "/etc/net-ethX.conf #@author Antonio J. Doblas Viso. Universidad de Malaga. #@date 2011-02-24 #*/ ## function ogGetNetInterface () { if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => eth0" return fi [ -n "$DEVICE" ] && echo "$DEVICE" } #/** # ogGetIpAddress #@brief Muestra la dirección IP del sistema #@return str_ip - Dirección IP #@version 0.10 - Integración en OpenGnSys 0.10 #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2010-02-11 #@version 1.0 - Integración OpenGnSys 0.10 Opengnsys 0.10-testing #@note Usa las variables utilizadas por el initrd "/etc/net-ethX.conf #@author Antonio J. Doblas Viso. Universidad de Malaga. #@date 2011-02-24 #@version 1.0.2 - Soporte para varias tarjetas de red #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2011-06-17 #*/ ## function ogGetIpAddress () { local IP if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => 192.168.0.10" return fi if [ -n $IPV4ADDR ]; then IP=$IPV4ADDR else # Obtener direcciones IP. if [ -n "$DEVICE" ]; then IP=$(ip -o address show up dev "$DEVICE" 2>/dev/null | awk '{if ($3~/inet$/) {printf ("%s ", $4)}}') else IP=$(ip -o address show up | awk '$2!~/lo/ {if ($3~/inet$/) {printf ("%s ", $4)}}') fi fi # Mostrar solo la primera. echo ${IP%%/*} # (comentario para Doxygen) */ } #/** # ogGetMacAddress #@brief Muestra la dirección Ethernet del cliente. #@return str_ether - Dirección Ethernet #@version 0.10 - Integración en OpenGnSys 0.10 #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2010-02-11 #@version 1.0.2 - Soporte para varias tarjetas de red #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2011-06-17 #*/ ## function ogGetMacAddress () { local MAC if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => 00:11:22:33:44:55" return fi # Obtener direcciones Ethernet. if [ -n "$DEVICE" ]; then MAC=$(ip -o address show up dev "$DEVICE" 2>/dev/null | awk '{sub (/.*\\/, ""); if ($1~/ether/) printf ("%s ", toupper($2));}') else MAC=$(ip -o address show up | awk '$2!~/lo/ {sub (/.*\\/, ""); if ($1~/ether/) printf ("%s ", toupper($2));}') fi # Mostrar sólo la primera. echo ${MAC%% *} } #/** # ogGetRepoIp #@brief Muestra la dirección IP del repositorio de datos. #@return str_ip - Dirección IP #@version 0.10 - Integración en OpenGnSys 0.10 #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2011-01-13 #@version 1.0 - Integración OpenGnSys 0.10 Opengnsys 0.10-testing #@note Comprobacion segun protocolo de conexion al Repo #@author Antonio J. Doblas Viso. Universidad de Malaga. #@date 2011-02-24 #*/ ## function ogGetRepoIp () { if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => 192.168.0.2" return fi # Obtener direcciones IP, segun el protocolo de montaje if [ -n "$OGIMG" ]; then case "$ogprotocol" in nfs) mount | grep " on $OGIMG " | cut -f1 -d: ;; smb) mount | grep " on $OGIMG " | cut -f3 -d/ ;; esac fi } #/** # ogGetServerIp #@brief Muestra la dirección IP del Servidor de OpenGnSys. #@return str_ip - Dirección IP #@version 0.10 - Integración en OpenGnSys 0.10 #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2011-01-13 #@version 1.0 - Integración OpenGnSys 0.10 Opengnsys 0.10-testing #@note Comprobacion segun protocolo de conexion al Repo #@author Antonio J. Doblas Viso. Universidad de Malaga. #@date 2011-02-24 #*/ ## function ogGetServerIp () { if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => 192.168.0.2" return fi # Obtener direcciones IP. if [ -n "$OPENGNSYS" ]; then case "$ogprotocol" in nfs) mount | grep " on $OPENGNSYS " | cut -f1 -d: ;; smb) mount | grep " on $OPENGNSYS " | cut -f3 -d/ ;; esac fi }