Autor
|
Tema: Duda sobre manejo de strings en bash (Leído 5,432 veces)
|
rastanthology
Desconectado
Mensajes: 130
|
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[ #!/bin/bash soloyo="false" hosts=0 ipme=`ifconfig wlan0 | grep "addr:"` while [ soloyo="false" ] do #en realidad quier hacer que nmap= mi ip pero con el ultimo valor = 0 #asi funciona en cualquier red nmap=`nmap -sP 10.0.0.0/24 | grep Host` sleep 30 for b in nmap do echo $nmap #aca necesito cortar $b para solo quede una ip for x in $ipme do echo $x #aca quiero reconocer si $x es una ip y asignar esa ip a una variable z done if [ $b != $z ] then hosts=$hosts + 1 echo $hosts fi if [ $hosts <= 2 ] then echo "Solo quedas vos y el router" soloyo="true" fi done # sleep 300 para que chequee cada 5 min done
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
|
|
« Última modificación: 25 Septiembre 2010, 19:59 pm por rastanthology »
|
En línea
|
|
|
|
[L]ord [R]NA
Desconectado
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
usa las etiquetas geshi... estan por algo.
|
|
|
En línea
|
|
|
|
rastanthology
Desconectado
Mensajes: 130
|
ahi lo cambie si te es mas comodo, lo que si no puede hacer es [code type="bash"] se puede usar esta opcion?
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
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]
|
|
|
En línea
|
|
|
|
rastanthology
Desconectado
Mensajes: 130
|
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
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
¿cómo que acotar la ip?
¿cómo que grep agarre directamente?
Pon algunos ejemplos para entenderte mejor.
|
|
|
En línea
|
|
|
|
rastanthology
Desconectado
Mensajes: 130
|
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
|
|
|
En línea
|
|
|
|
rastanthology
Desconectado
Mensajes: 130
|
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 #!/bin/bash soloyo="false" hosts=0 let pip=0 let pip1=0 let pip2=0 let pip3=0 function setip() { ipme=`ifconfig wlan0 | awk '/inet addr/ {split ($2,A,":"); print A[2]}' | tee ip.txt` getip } function getip() { while read a do echo "Mi ip: $ipme" arr=$(echo $a | tr "." "\n") pip=0 for x in $arr do if [ $pip -eq 0 ] then pip1=$x pip=1 elif [ $pip -eq 1 ] then pip2=$x pip=2 elif [ $pip -eq 2 ] then pip3=$x pip=3 else ipmap=$(echo "$pip1.$pip2.$pip3.0/24") fi done done < ip.txt } function gente() { while [ soloyo="false" ] do setip echo "Haciendo nmap -sP $ipmap" nmap=`nmap -sP $ipmap | grep Host | tee hosts.txt` while read f1 f2 f3 f4 f5 f6 do if [ $f2 != $ipme ] then hosts=`expr $hosts + 1` echo $hosts ": " $f2 fi done < hosts.txt if [ $hosts -eq 1 ] then echo "Solo quedas vos y el router" soloyo="true" gdialog --yesno "Solo quedas vos y el router" hosts=0 solo fi hosts=0 sleep 250 done } function solo() { while [ soloyo="true" ] do setip echo "Haciendo nmap -sP $ipmap" nmap=`nmap -sP $ipmap | grep Host | tee hosts.txt` while read f1 f2 f3 f4 f5 f6 do if [ $f2 != $ipme ] then hosts=`expr $hosts + 1` echo $hosts ": " $f2 fi done < hosts.txt if [ $hosts -eq 1 ] then b=b #si no ponia nada aca no le gustaba al if... elif [ $hosts -eq 0 ] then b=b else echo "Se concetaron mas usuarios" soloyo="true" hosts=0 gdialog --yesno "Se conectaron mas usuarios" gente fi hosts=0 sleep 250 done } setip gente
|
|
« Última modificación: 29 Septiembre 2010, 02:51 am por rastanthology »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda sobre manejo de archivos
Programación C/C++
|
xogeid46
|
3
|
2,306
|
19 Enero 2013, 05:48 am
por apuromafo CLS
|
|
|
Duda sobre programa en C con STRINGS
Programación C/C++
|
elWartix
|
7
|
2,694
|
10 Marzo 2016, 09:31 am
por MAFUS
|
|
|
MANEJO DE STRINGS EN VB.NET
.NET (C#, VB.NET, ASP)
|
igustin10
|
2
|
2,618
|
21 Diciembre 2016, 15:49 pm
por igustin10
|
|
|
Manejo de strings enormes y caracteres?
Programación C/C++
|
@XSStringManolo
|
6
|
2,969
|
11 Junio 2019, 20:15 pm
por @XSStringManolo
|
|
|
Manejo de Strings
Programación General
|
_whiteBird
|
6
|
4,260
|
26 Junio 2020, 02:37 am
por Tachikomaia
|
|