#!/bin/sh
#	list-iface-ip 0.03
#
#	Copyright (C) 2000:	Manel Marin <manel3@apdo.com>
#	Licence:		GNU GPL version >= 2
#
#
#	Devuelve las IP de los interfaces que se le dan como parmetros
#
#	Uso:	list-iface-ip ppp0 eth0, list-iface-ip eth, list-iface-ip all
#
#
#	------
#	Returns IP of interfaces given as parameters
#
#	Use:	list-iface-ip ppp0 eth0, list-iface-ip eth, list-iface-ip all
#

# SALIDA DE ifconfig (Bcast: no sale en iface lo)
#
#eth0      Link encap:Ethernet  HWaddr 00:80:AD:20:D7:C0
#	   inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
#	   UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
#	   RX packets:1691 errors:0 dropped:0 overruns:0 frame:0
#	   TX packets:1849 errors:0 dropped:0 overruns:0 carrier:0
#	   collisions:4 txqueuelen:100
#	   Interrupt:10 Base address:0x300


IFACES=$*		# Interfaces solicitados, "" == TODOS

/sbin/ifconfig | awk -v IFACES="$IFACES" '

    BEGIN {
	ORS = " "	# Separar valores de salida por espacios y no por \n
	IPtext="addr:"				# Identificador de IP
	if ( IFACES == "all" ) IFACES = ".*"	# Todos los interfaces 
    }

# GENERAR iface PARA TODAS LAS LINEAS
    $0 !~ "^[ \t]+" {	# Si la linea no empieza en espacios/tabuladores
	iface = $1	# la primera palabra es el nombre del interface
    }

# LOCALIZAR LA LINEA DE IPs
    $0 ~ IPtext {

# SI NO SE HA PEDIDO ESTE IFACE SIGUIENTE
	choosen = "no"
	split( IFACES, parts, "[ \t]+" )	# Crear tabla "parts" con ifaces
	for ( n in parts ) {
##	    print "n=" parts[n] " "			# debug
	    if ( iface ~ "^"parts[n] ) choosen = "yes"
	}
	if ( choosen == "no" ) next

# DELIMITAR LA IP
	ip = $0
	gsub( ".*"IPtext, "", ip )		# Quitar lo de antes
	gsub( "[ \t]+.*", "", ip )		# Quitar lo de despues

# ENVIAR A STDOUT
	print ip
    }
'
