domingo, mayo 27, 2007

WIFIFAST

Aki les presento el programa q estoy haciendo para conectarse a cualkier wireless
incluso en modo ad-hoc

supuestamente iba ahacer un script de 3 lineas, pero como todos saben las cosas empiezan a mutar


y no resivo reclamos pq no esta en python p perl o cosas asi
se me ocurrio hacerlo en bash y ra

ya aki les va

les recuerdo q aun le falta mucho


#!/bin/bash
echo $1 $2 $3


iwconfig >& salida_iwconfig_tmp
eth=`cat salida_iwconfig_tmp | grep ESSID | awk '{print $1}'`
declare -i cant_par=$#
#echo $cant_par

if [ $# -lt 1 ] #El comando si no viene con parametros entonces listara las redes disponibles
then


cel=(`iwlist $eth scan | grep ESSID`) ## con esto filtramos las redes q nos entrega iwlist y lo redusimos a ESSID:"algo"
mode=(`iwlist $eth scan | grep Mode`) ## con esto filtramos las redes q nos entrega iwlist y lo redusimos a Mode:manager
m=`echo ${mode[$i]} | awk -F ":" '{print $2}'`

rm salida_iwconfig_tmp
declare -i i=0

while [ $i -lt ${#cel[*]} ]
do

echo "$i ${cel[$i]} Modo: $m" # con esto mostramos las redes asociadas a un
#numero
i+=1

done
declare -i num_red=${#cel[*]}
declare -i num_redes=${#cel[*]}
num_red+=1
while [ $num_redes -lt $num_red ]
do
# echo "$num_red numeor de red"
# echo "${#cel[*]} numeros de parametros"
echo "Ingrese el numero de la red a la que se desea asociar: "
read num_o_letra
echo $num_o_letra | mawk /[*_A-Za-z]/ > num_letra
linea=(`wc -l num_letra`)
rm num_letra
declare -i cant=`echo ${linea[0]}`
if [ $cant -eq 0 ]
then
num_red=num_o_letra
# echo "opcin validaaaaaaaa"

else
echo "Debe ingresar un numero valido"
fi

# echo $num_red
num_red+=1
# echo "tuuuuuuuu $num_red"

done
num_red=num_red-1
# echo $num_red
echo "Ud. se asociara a la Red ${cel[$num_red]}"
e="`echo ${cel[$num_red]} | awk -F ":" '{print $2}'`" #####se filtra el ESSID:"algo" dejandolo solo en "algo"


echo "Ingrese la clave de la red: "
read k



else #si viene con parametros

if [ $# -lt 2 ] #si viene sin parametro de clave
then
echo "****ALERTA***** No se utilizara encriptación. Peligro!! Red sin Seguridad!!"
k="off"
# echo "sin argumento 2"
# echo $k
else
k=$2
echo $k
fi

# echo $2

if [ $# -lt 3 ] #si viene sin parametro de modo
then
echo "Modo Managed Activado"
# ip="dhclient eth2"
# echo "sin argumento 3"
m="Manager"
else
m=$3

fi

if [ $# -eq 3 ] # Si viene con 3 parametros kiere decir q se kiso modificar el modo de la tarjeta de red
then

echo "Modo $3 Activado" #se muestra el modo activado
verificar="NO"

if [ $3 = "ad-hoc" ] || [ $3 = "Ad-Hoc" ] ###si se asocia a una red adhoc se necesita fijar
#una ip manual a la t de red
then
while [ $verificar = "NO" ]
do
echo "Ingrese direccion ip para su tarjeta de red: "
read ip
verificar=`python verifica_ip.py $ip`
if [ $verificar = "NO" ]
then
echo "******ERROR: Direccion ip Invalida"
fi
done

ifconfig eth2 $ip
verificar="NO" ##Esto es para controlar q los dns sean validos

while [ $verificar = "NO" ]
do
echo "Ingrese las Direcciones de los Servidores DNS, en caso de omitir se mantendran los actuales: "
echo "Ejemplo: 200.100.10.1 200.100.23.4 200.4.5.1"
read dns
arreglo=($dns)

# echo "Cantidad se servidores DNS"
# echo ${#arreglo[@]}

if [ ${#arreglo[@]} -lt 1 ]
then
echo "Se mantendran los siguientes Servidores DNS:"
cat /etc/resolv.conf
verificar="SI"
fi

declare -i j=0
while [ $j -lt $# ]
do
# echo "$j akiiiiiiiiiii"
ip=${arreglo[j]}
# echo $ip
verificar=`python verifica_ip.py $ip`
if [ $verificar = "NO" ]
then
echo "*****ERROR:Servidor DNS ${arreglo[j]} invalido*******"
echo "Ingrese nuevamente"
break
fi
j+=1

done
done


else
if [ $m = "Managed" ] || [ $m = "managed"]
then
t=0
else
if [ $m = "Monitor" ] || [ $m = "monitor"]
then
echo "Modo Monitor no soportado"
else
echo "Modo desconocido"
fi
echo "Se activara Modo Managed"
m="Managed"
fi
fi
fi



fi

echo $#

if [ 3 -lt $cant_par ]
then

echo "cantidad de parametros envalida"
echo "wififast "
else

# echo "Parametroa validos"
# echo $1 $k $m
e=$1

iwconfig $eth essid $e key "$k" mode $m # aki se ejecuta el comando

sleep 2 #de esta forma nos aseguramos q el iwconfig alcance a reaccionar y efectivamente aparesca
#enlazado

if [ unassociated = `iwconfig eth2 | grep eth2 | awk '{print $2}'` ]
then
echo "No te has logrado asociar a la red $1"
elif [ IEEE = `iwconfig eth2 | grep eth2 | awk '{print $2}'` ]
then

echo "Te has Asociado a la red `iwconfig eth2 | grep eth2 | awk '{print $4}'`"

fi
if [ $# -lt 3 ] && [ $# ] #si viene sin parametro de modo
then
echo "Modo Managed Activado"
ip="dhclient eth2"

fi
fi


#### P hacer
### ubicar bien el dhclient
#### agrgar los dns ingresados a mano al resolv.conf
#### validar ingresos de datos (ip estan listas, numero de red del selector de redes tb esta listo)

adsense busqueda

Búsqueda personalizada