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)