opengnsys/client/engine/Net.lib

147 lines
4.0 KiB
Bash

#!/bin/bash
#/**
#@file Net.lib
#@brief Librería o clase Net
#@class Net
#@brief Funciones básicas de red.
#@version 0.10
#@warning License: GNU GPLv3+
#*/
#/**
# 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
# 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"
echo $HOST
}
#/**
# ogGetNetInterface
#@brief Muestra la interfaz de red del sistema
#@return str_interfaz - 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 ()
{
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
#*/ ##
function ogGetIpAddress ()
{
local IP
if [ -n $IPV4ADDR ]
then
echo $IPV4ADDR
else
# Obtener direcciones IP. /* (comentario para Doxygen)
IP=$(ip address show | awk '$2!~/lo/ { readline; if ($1~/inet$/) {sub (/\/.*/, ""); printf ("%s ", $2)}}')
# Mostrar sólo la primera. (comentario para Doxygen) */
echo ${IP%% *}
fi
}
#/**
# 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
#*/ ##
function ogGetMacAddress ()
{
local MAC
# Obtener direcciones Ethernet.
MAC=$(ip address show | awk '$2!~/lo/ {readline; if ($1~/ether/) printf ("%s ", toupper($2));}')
# 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 ()
{
# 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 ()
{
# Obtener direcciones IP.
if [ -n "$PENGNSYS" ]; then
case "$ogprotocol" in
nfs) mount | grep " on $OPENGNSYS " | cut -f1 -d: ;;
smb) mount | grep " on $OPENGNSYS " | cut -f3 -d/ ;;
esac
fi
}