Mostrando las entradas con la etiqueta mediumscriptig. Mostrar todas las entradas
Mostrando las entradas con la etiqueta mediumscriptig. Mostrar todas las entradas

sábado, 16 de marzo de 2013

Script bash para conectarse a wifi por terminal

Como hace poco reinstale gentoo me recordó lo mucho que he batallado para conectarme a wifi en un sistema operativo sin interfaz gráfica o no solo la interfaz si no que sin ningún daemon que haga esto simple como wicd,networkmaganager,etc,esto me recuerda mi epoca de Debianita y de Archero porque tenia algunos problemas con mi tarjeta de wireless y después no sabia que era lo que hacia mal,porque no me conectaba :(

Ya que, verán,para conectarse a una red wifi por consola se usa este comando:

iwconfig interfaz_de_red essid nombre_de_red

En Linux,en BSD es :


ifconfig wlan0 inet "tu-inet" netmask 255.255.255.0 ssid "Tu-SSID" channel "Canal" # Creo que este también funciona para Linux
Pero primero necesitamos escanear los puntos de acceso,para eso usamos el comando:

iwlist scan

Pero nos tira muchos datos,podemos verlo paso a paso con:

iwlist scan | more

Pero eso ya es para buscar otro tipo de información,normalmente obtenemos el esssid de las redes cercanas con:

iwlist scan | grep ESSID
 Y luego ya usamos el comando mencionado arriba,pero en este punto yo siento que aveces me equivoco y no tecleo bien el nombre de la red,bueno si es mi red con mi nombre no hay problema,pero si quiero crackear conectarme a una red abierta de un parque,etc :O.

Bueno,ya con el essid asociado solo nos asignamos una ip,por dhclient,dhcpcd,ifconfig,etc,pero bueno mejor programe un script que hace casi,todo el trabajo,digo casi,porque necesitamos tener funcionando correctamente nuestra interfaz de red lan (wlanX,ethX,etc) y si no es asi no funcionara, también necesitamos tener dhcpcd instalado o dhclient,o cualquier programa que haga este trabajo de asignación (necesitan modificar el script).

Bueno el script:

Busca las redes mas cercanas ha base de pipes unix,las añade a un array y las muestra a selección,pregunta si usamos clave(solo wep) y nos asocia a la red y nos asigna una ip:

Enlace
Nota: Si tienen un daemon que haga esto les puede dar errores,graves.

Solo deben ejecutar como root

sudo bash script.sh

Y listo :D

Lo modifican a sus necesidades, no tengo pantallasos porque ya tengo networkmanager en mis sistemas y cuando lo programe no tenia como sacar screenshots (a menos con el iPhone pero es peligroso) lo programe en tty.

Eso es todo
Leer más...

miércoles, 19 de diciembre de 2012

Tutorial bash medium scripting 1

Como les prometi hace un tiempo cuando termine el curso básico de bash basico, iba a comenzar los de avanced scripting en el futuro y lo hare,pero de momento no,ya que necesito poner primero la dificultad siguiente,ya que es así:

basic scripting

medium scripting

avanced scripting

core scripting

Bueno quien sabe si va así o le invente de mas :P

Pero así lo veremos aquí en tiempo de tux :D

Así que podemos tachar basic scripting

La verdad yo a penas voy en avanced scripting y si me equivoco en algo o hago mala practica comenten,ya que es bueno aprender de los demás.

Bueno este tutorial y los que siguen (9 mas) van a ser basados en los de antes,osea que ya deben saber basic scripting.

Como dije yo no se bien,bien he leído libros de red hat y tutoriales (en ingles) sobre scripting,y como dije no vendría mal una ayuda (comentarios, correcciones,etc),bueno.

Primer ejemplo:

Crear un archivo con un bucle que se copie a otro,pero con verificadores por si existe alguno de los dos y romper el bucle cuando existan los dos :D

Primero creamos una función,que usaremos para que no sea tan rápido el proceso:

function dormir {

echo "Aguarde un segundo..."; "sleep 1;

}

Aquí lo que cabe ver es que usamos (;) para no usar mas lineas,ya que es lo que indican los (;)

Asignamos el nombre de los dos ficheros.

: ${fichero_uno="hello.txt"}
: ${fichero_dos="HolaMundo.txt"}

Creamos el bucle(while) y verificamos si no existe el primero,ya que sin el primero no podemos crear el segundo:


while [[ ! -e '${fichero_uno}' ]]

do
                          
# Comandos aquí

done


Verificamos con ! -e (visto en basic scripting)

Y llenamos el bucle:



echo "No existe:"; echo "${fichero_uno}"

dormir

Mostramos que no existe,para demostrar mas los ; los use ya que se podía hacer así también el comando echo:


echo -e "No existe:\n""${fichero_uno}"


Luego llamamos la función dormir que creamos para esperar un poco a que inicie lo interesante:

Creamos una estructura if que vea si existe el archivo 2 y si existe copia el archivo 2 a 1 y rompe el bucle,si no existe lo crea y se repite el bucle,cuando regrese ya existirá y hará lo de if:

if [ -e "${fichero_dos}" ]; then  

echo "${fichero_dos} existe"

dormir

cp ${fichero_dos} $fichero_uno}

break

else

echo "$fichero_dos} no existe"; dormir 

touch ${fichero_dos}

fi; 


Cuando rompa el bucle mostraremos:


echo "Test completo."; echo "$fichero_uno} y ${fichero_dos} existen"


Y así queda el script completo:


#!/bin/bash

function dormir {

echo "Aguarde un segundo..."; sleep 1;

}

: ${fichero_uno="hello.txt"}
: ${fichero_dos="HolaMundo.txt"}

while [[ ! -e "${fichero_uno}" ]]

do
                          
if [ -e "${fichero_dos}" ]; then  

echo "${fichero_dos} existe"

dormir

cp ${fichero_dos} ${fichero_uno}

break

else

echo "${fichero_dos} no existe"; dormir 

touch ${fichero_dos}

fi; 

done

echo "Test completo."; echo -e "${fichero_uno} y ${fichero_dos} existen\n""Haciendo ls a tus txt en $PWD"
dormir
ls *txt

Ejecuten y vean lo grandioso del script :P

Crea el archivo hello.txt y desde ese crea el holamundo.txt,pero verifica primero si no existe hello.txt :D

Ejemplo 2:

Un momento no es tan grandioso :(

Porque si ya existe hello.txt no crea holamundo.txt.

Como se soluciona esto?

Si solo lo ejecutan y hasta ahi no pasa nada,de hecho esperaría a que comentaran el error,pero el hecho no es que usen los ejemplos que aprendan,es que usen lo que aprendan con los ejemplos y si basan este algoritmo en otra cosa es cuando va a dar error :(

Lo solucionamos solamente haciendo una comparacion dual,en el bucle while usando una coma (,):

#!/bin/bash

function dormir {

echo "Aguarde un segundo..."; sleep 1;

}

: ${fichero_uno="hello.txt"}
: ${fichero_dos="HolaMundo.txt"}

while [[ ! -e "${fichero_uno}","${fichero_dos}" ]]

do
                          
if [ -e "${fichero_dos}" ]; then  

echo "${fichero_dos} existe"

dormir

cp ${fichero_dos} ${fichero_uno}

break

else

echo "${fichero_dos} no existe"; dormir 

touch ${fichero_dos}

fi; 

done

echo "Test completo."; echo -e "${fichero_uno} y ${fichero_dos} existen\n""Haciendo ls a tus txt en $PWD"
dormir
ls *txt


Y listo :D

Ejemplo 3:

Definir nuestros propios archivos:

#!/bin/bash

function dormir {

echo "Aguarde un segundo..."; sleep 1;

}

echo -n "Nombre fichero uno: "
read fichero_uno
echo -n "Nombre fichero dos: "
read fichero_dos

echo "Se creara el fichero dos del uno:"; dormir

while [[ ! -e "${fichero_uno}","${fichero_dos}" ]]

do
                          
if [ -e "${fichero_dos}" ]; then  

echo "${fichero_dos} existe"

dormir

cp ${fichero_dos} ${fichero_uno}

break

else

echo "${fichero_dos} no existe"; dormir 

touch ${fichero_dos}

fi; 

done

echo "Test completo."; echo -e "${fichero_uno} y ${fichero_dos} existen\n""Haciendo ls en $PWD"
dormir
ls *txt

Esto de que sirve?

Como el ejemplo es claro y sin objetivo, para nada,pero si usan este algoritmo sirve para muchas cosas,implementando mas comandos,funciones y bucles,por ejemplo para clonar un archivo/carpeta a otro y verificar que existan ambos,por si ya existen y no cometer un error.

Ejemplo 4:

No molestes :D

Como estos ejemplos son sucios podemos automatizar el borrado de toda la basura que estamos dejando con los archivos que estamos creando.

Primero creamos una carpeta,pero no lo haremos simple,usaremos el algoritmo de arriba(verificar y no dañar):


function carpeta {

echo -n "Crearemos una carpeta escriba el nombre que dese : "

read carpeta
mi_carpeta=`echo $carpeta`
}

carpeta

while [ 0 ]; do

if [ ! -d "${mi_carpeta}" ]; then

mkdir "${mi_carpeta}" && cd "${mi_carpeta}"

echo "Directorio actual $PWD"

break

else

echo "Ya existe la carpeta y puede contener algo importante,elije otro nombre"

carpeta

fi

done


Ahora agregamos el script anterior


#!/bin/bash

function dormir {

echo "Aguarde un segundo..."; sleep 1;

}

function carpeta {

echo -n "Crearemos una carpeta escriba el nombre que dese : "

read carpeta
mi_carpeta=`echo $carpeta`
}

carpeta

while [ 0 ]; do

if [ ! -d "${mi_carpeta}" ]; then

mkdir "${mi_carpeta}" && cd "${mi_carpeta}"

echo "Directorio actual $PWD"

break

else

echo "Ya existe la carpeta y puede contener algo importante,elije otro nombre"

carpeta

fi

done


echo -n "Nombre fichero uno: "
read fichero_uno
echo -n "Nombre fichero dos: "
read fichero_dos

echo "Se creara el fichero dos del uno:"; dormir

while [[ ! -e "${fichero_uno}","${fichero_dos}" ]]

do
                          
if [ -e "${fichero_dos}" ]; then  

echo "${fichero_dos} existe"

dormir

cp ${fichero_dos} ${fichero_uno}

break

else

echo "${fichero_dos} no existe"; dormir 

touch ${fichero_dos}

fi; 

done

echo "Test completo."; echo -e "${fichero_uno} y ${fichero_dos} existen\n""Haciendo ls en $PWD"
dormir
ls 

Y por ultimo agregamos un comprobado y un eliminador:


function adios {

echo -e "Directorio acual $PWD\n""Listando..."; ls $PWD 

echo -n "Borrar todo lo que se creo? n/s : "

read respuesta

case ${respuesta} in

s|S)

echo "Borrando archivos..."; dormir
rm "${fichero_dos}" && rm "${fichero_uno}"

echo "Borrando carpeta..."; dormir
cd ..; rmdir ${mi_carpeta}
exit 1;
;;
n|N)

echo "Buena eleccion ;P "; dormir; exit 1;
;;
*)

echo "Ok"; exit 1;
;;

esac

}

Y lo agregamos,pero primero incluimos también clear para un trabajo limpio

Y si queremos podemos añadir este, digamos "snipett" también:

function autodestruccion {

echo -n "Borrar este script tambien: "

read opcion

case ${opcion} in

s|S)

echo "Adios :("; rm $0
;;
n|N)

echo "Buena elección :)"; exit 1;
;;
*)
echo "Ok"; exit 1;
;;
esac

}

Y así queda el script


Enlace



Así es el medium scripting,bueno como dije no se si exista el medium scripting pero tenemos que ir poco a poco,porque esto que hicimos en el avanced scripting no es nada y menos en el core,ya que usamos:

sed,awk,perl,flujos estándares,cut, parámetros de desplazamiento,etc

Pero vamos bien :D

Eso es todo
Leer más...