Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: rastanthology en 24 Septiembre 2010, 04:22 am



Título: Duda sobre manejo de strings en bash
Publicado por: rastanthology en 24 Septiembre 2010, 04:22 am
Buenas, estaba queriendo hacer un pequeño script que chequee si soy la unica persona conectada a la red para saber cuando puedo descargar sin molestar a nadie, pero al desconocer alguna funcion de manejo de strings no puedo hacerla, a ver si alguien me puede hechar una mano[

Código
  1. #!/bin/bash
  2. soloyo="false"
  3. hosts=0
  4. ipme=`ifconfig wlan0 | grep "addr:"`
  5. while [ soloyo="false" ]
  6. do
  7.        #en realidad quier hacer que nmap= mi ip pero con el ultimo valor = 0
  8.        #asi funciona en cualquier red
  9.        nmap=`nmap -sP 10.0.0.0/24 | grep Host`
  10.        sleep 30
  11.        for b in nmap
  12.        do
  13.                echo $nmap
  14.                #aca necesito cortar $b para solo quede una ip
  15.                        for x in $ipme
  16.                        do
  17.                                echo $x
  18.                                #aca quiero reconocer si $x es una ip y asignar esa ip a una variable z
  19.                        done
  20.                         if [ $b != $z ]
  21.                         then
  22.                                        hosts=$hosts + 1
  23.                                        echo $hosts
  24.                         fi
  25.                        if [ $hosts <= 2 ]
  26.                        then
  27.                                echo "Solo quedas vos y el router"
  28.                                soloyo="true"
  29.                        fi
  30.  
  31.        done
  32. # sleep 300 para que chequee cada 5 min
  33. done
  34.  

Bueno si alguien me puede hechar una mano para lograr alguna forma de acotar la ip con algun comando en alguna variable estaria agradecido. Sino si hay alguna forma de usar el comando grep mejor para que agarre solo las ips directamente tambien. Y tambien si hay alguna forma de que la terminal en la que se este ejecutando pase al frente para avivarme que el while termino sin estar mirando la terminal de ves en cuando estaria copado.

Saludos


Título: Re: Duda sobre manejo de strings en bash
Publicado por: [L]ord [R]NA en 24 Septiembre 2010, 05:05 am
usa las etiquetas geshi... estan por algo.


Título: Re: Duda sobre manejo de strings en bash
Publicado por: rastanthology en 24 Septiembre 2010, 06:03 am
ahi lo cambie si te es mas comodo, lo que si no puede hacer es [code type="bash"] se puede usar esta opcion?


Título: Re: Duda sobre manejo de strings en bash
Publicado por: raul338 en 25 Septiembre 2010, 03:52 am
ahi lo cambie si te es mas comodo, lo que si no puede hacer es [code type="bash"] se puede usar esta opcion?

[code=bash]


Título: Re: Duda sobre manejo de strings en bash
Publicado por: rastanthology en 25 Septiembre 2010, 20:00 pm
ahi lo cambie si te es mas comodo, lo que si no puede hacer es [code type="bash"] se puede usar esta opcion?

[code=bash]

Gracias, ahi quedo


Título: Re: Duda sobre manejo de strings en bash
Publicado por: leogtz en 26 Septiembre 2010, 08:09 am
¿cómo que acotar la ip?

¿cómo que grep agarre directamente?

Pon algunos ejemplos para entenderte mejor.


Título: Re: Duda sobre manejo de strings en bash
Publicado por: rastanthology en 26 Septiembre 2010, 09:46 am
mmm veo que no me exprese bien

yo lo que quiero hacer es a una variable x asignarle mi ip, a una variable z asignarle las ip que me devuelve el nmap y despues quiero sumar las ips totales del nmap pero que no cuente la mia.

con acotar un ip me refiero, a que como estoy tratando de asignarlo, en $x me queda como resultado addr:X.X.X.X, cuando lo que en realidad quiero que quede es solo X.X.X.X

despues tambien me interesaria hacer que quede X.X.X.0/24 ; sumarle el 0/24 al string no es el problema, sino sacarle una X

para z lo mismo, el nmap me devuelve Host ip is up, y quiero extraer de ahi la ip y darsela a una variable

con lo del grep queria decir si se podia usar una expresion regular como ([0-1][0-9][0-9]|2[0-9][0-9]) capaz de devolverme solo la ip sin la linea en que la contiene



Título: Re: Duda sobre manejo de strings en bash
Publicado por: rastanthology en 28 Septiembre 2010, 00:00 am
bueno ya lo solucione... encontre dos formas, usando el comando split, que todavia no la termine de entender, y otra usando un while leyendo de un texto, les dejo el codigo

lo corregi un toque que tenia un par de errores... ahora tambien funciona si cambias de red con distinto rango de ip

Código
  1. #!/bin/bash
  2. soloyo="false"
  3. hosts=0
  4. let pip=0
  5. let pip1=0
  6. let pip2=0
  7. let pip3=0
  8. function setip() {
  9. ipme=`ifconfig wlan0 | awk '/inet addr/ {split ($2,A,":"); print A[2]}' | tee ip.txt`
  10. getip
  11. }
  12. function getip() {
  13. while read a
  14. do
  15. echo "Mi ip: $ipme"
  16. arr=$(echo $a | tr "." "\n")
  17.        pip=0
  18. for x in $arr
  19. do
  20. if [ $pip -eq 0 ]
  21. then
  22. pip1=$x
  23. pip=1
  24. elif [ $pip -eq 1 ]
  25. then
  26. pip2=$x
  27. pip=2
  28. elif [ $pip -eq 2 ]
  29. then
  30. pip3=$x
  31. pip=3
  32. else
  33. ipmap=$(echo "$pip1.$pip2.$pip3.0/24")
  34. fi
  35. done
  36. done < ip.txt
  37. }
  38.  
  39. function gente() {
  40. while [ soloyo="false" ]
  41. do
  42.  
  43. setip
  44.        echo "Haciendo nmap -sP $ipmap"
  45. nmap=`nmap -sP $ipmap | grep Host | tee hosts.txt`
  46. while read f1 f2 f3 f4 f5 f6
  47. do
  48.  
  49. if [ $f2 != $ipme ]
  50.                         then
  51.                                      hosts=`expr $hosts + 1`
  52.                                      echo $hosts ": " $f2
  53. fi
  54.  
  55. done < hosts.txt
  56. if [ $hosts -eq 1 ]
  57. then
  58. echo "Solo quedas vos y el router"
  59. soloyo="true"
  60. gdialog --yesno "Solo quedas vos y el router"
  61. hosts=0
  62. solo
  63.  
  64. fi
  65. hosts=0
  66. sleep 250
  67. done
  68. }
  69. function solo() {
  70.  
  71. while [ soloyo="true" ]
  72. do
  73.  
  74. setip
  75.                echo "Haciendo nmap -sP $ipmap"
  76. nmap=`nmap -sP $ipmap | grep Host | tee hosts.txt`
  77. while read f1 f2 f3 f4 f5 f6
  78. do
  79.  
  80. if [ $f2 != $ipme ]
  81.                         then
  82.                                        hosts=`expr $hosts + 1`
  83.                                        echo $hosts ": " $f2
  84. fi
  85.  
  86. done < hosts.txt
  87. if [ $hosts -eq 1 ]
  88. then
  89. b=b #si no ponia nada aca no le gustaba al if...
  90. elif [ $hosts -eq 0 ]
  91. then
  92. b=b
  93. else
  94. echo "Se concetaron mas usuarios"
  95. soloyo="true"
  96. hosts=0
  97. gdialog --yesno "Se conectaron mas usuarios"
  98. gente
  99. fi
  100. hosts=0
  101. sleep 250
  102. done
  103.  
  104. }
  105. setip
  106. gente
  107.