Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

script shell while anidado

1,283 views
Skip to first unread message

Alberto Velasco

unread,
Dec 12, 2002, 6:07:00 AM12/12/02
to
Hola, me estoy volviendo loco para hacer un simple while anidado:

#!/bin/bash
#alberto.sh
#Script para capturar todas las MACs de la empresa con su respectiva IP.

echo "Buscando IPs"
VAL=1
VALB=1
IP="10.95."
while [ $VAL -lt 255 ]
do
while [ $VALB -lt 255 ]
do
echo arp $IP$VAL"."$VALB
let VALB=VALB+1
done
let VAL=VAL+1;

done
#fin alberto.sh


Sencillo verdad??? pues no me funciona... sólo me hace el primer bucle,
hasta 10.95.1.255 y se para. ¿Cuál es el problema? Espero que alguien me
pueda echar una mano. Gracias por anticipado.

"Jesús M. NAVARRO"

unread,
Dec 12, 2002, 7:20:35 AM12/12/02
to
Hola, Alberto:

Parece fácil: fíjate en el estado de la variable VALB, y que sólo haces
"echo" en el bucle interior: pon un echo en el bucle exterior, y verás
lo que pasa
(pista)
10.95.1.1
10.95.1.2
10.95.1.3
(...)
10.95.1.254
10.95.1.255
10.95.2.255
10.95.3.255
10.95.4.255
10.95.5.255
(...)
10.95.254.255
10.95.255.255
FIN

¿Lo ves ahora?
--
SALUD,
Jesús
***
jesus_...@undominio.net
***

J.A. Gutierrez

unread,
Dec 12, 2002, 8:44:27 AM12/12/02
to
Alberto Velasco <vel...@tid.es> wrote:
: Hola, me estoy volviendo loco para hacer un simple while anidado:

: #!/bin/bash
: #alberto.sh
: #Script para capturar todas las MACs de la empresa con su respectiva IP.

: echo "Buscando IPs"
: VAL=1
: VALB=1
: IP="10.95."
: while [ $VAL -lt 255 ]
: do
: while [ $VALB -lt 255 ]
: do
: echo arp $IP$VAL"."$VALB
: let VALB=VALB+1
: done
: let VAL=VAL+1;

let VALB=1

: done
: #fin alberto.sh

por cierto, no se si tiene mucho sentido buscar la direccion
MAC de *.255...
Ademas, antes de hacer un arp a una IP es conveniente hacerle
un ping para que la cache de arp este actualizada.


--
PGP and other useless info at \
http://www.cps.unizar.es/~spd/ \
finger://daphne.cps.unizar.es/spd \ Timeo Danaos et dona ferentes
ftp://ivo.cps.unizar.es/pub/ \ (Virgilio)

"Jesús M. NAVARRO"

unread,
Dec 12, 2002, 8:45:07 AM12/12/02
to
Hola, J.A.:

J.A. Gutierrez wrote:
> Alberto Velasco <vel...@tid.es> wrote:
> : Hola, me estoy volviendo loco para hacer un simple while anidado:
>
> : #!/bin/bash
> : #alberto.sh
> : #Script para capturar todas las MACs de la empresa con su respectiva IP.
>
> : echo "Buscando IPs"
> : VAL=1
> : VALB=1
> : IP="10.95."
> : while [ $VAL -lt 255 ]
> : do
> : while [ $VALB -lt 255 ]
> : do
> : echo arp $IP$VAL"."$VALB
> : let VALB=VALB+1
> : done
> : let VAL=VAL+1;
>
> let VALB=1
>
> : done
> : #fin alberto.sh
>
> por cierto, no se si tiene mucho sentido buscar la direccion
> MAC de *.255...

En realidad no parece que lo haga (*primero* hace la arprquest y después
incrementa la variable; puesto que el bucle se verifica mientras la
variable es *menor* que 255, 255 no debería ser probado).

> Ademas, antes de hacer un arp a una IP es conveniente hacerle
> un ping para que la cache de arp este actualizada.
>

En realidad, para todo el asunto hubiera utilizado nmap, que ofrece
mucha más flexibilidad.

Alberto Velasco

unread,
Dec 12, 2002, 9:24:25 AM12/12/02
to
Hola, gracias por las soluciones que me habéis dado.
Hago este script por lo siguiente, porque quiero sacar todas las direcciones MAC
de mi empresa y volcarlas luego a una Base de Datos.
El primer paso es este, recoger en un fichero todas las direcciones, para ello
con dos bucles anidados empleo por ejemplo la sentecia arp ip. Ya sé que las
*.255 no valen, y como esas algunas otras, pero tampoco vamos a perder más
tiempo en perfeccionar el script, ya que si es una 255 no devolverá ninguna
dirección.
También tengo en cuenta que primero hay que establecer conexión con cada máquina
para que esté en la tabla de ARP, pero cómo el primer paso que era el bucle
anidado no me salía pues no he podido continuar.
Gracias a todos.

"Jesús M. NAVARRO" ha escrito:

0 new messages