Vous êtes sur la page 1sur 30

EXTRAS="$4" EXTRAS="$4" # ESSIDS de las redes disponibles ESSIDS=`iwlist $INT scanning 2>/dev/null | grep ESSID echo "Configurandocut -f 2 -d \"`

| sort | uniq | interfaz..." echo "Configurando interfaz..." if -z $KEY ]; then if [[ -z[ $ESSIDS ]]; essid $ESSID $EXTRAS then iwconfig $INT echo "No se encontraron redes disponibles" else iwconfig $INT essid $ESSID key $KEY $EXTRAS exit 1 fi fi if [ -z $KEY ]; then iwconfig $INT essid $ESSID $EXTRAS else iwconfig $INT essid $ESSID key $KEY $EXTRAS fi

j=1 } for i in $ESSIDS; do # Paso de parametros ARRESSIDS[$j]="$i" for i in "$@"; do CUANTOS="$j" if [ "$i" = "-i" ]; then let INT="$2" j=($j+1) elif [ "$i" = "-h" ]; then done echo "Uso: wireless.sh [OPCION]"

echo "Solicitando IP via DHCP..." echo "Solicitando IP via DHCP..." dhcpcd $INT && echo -e "Conectado a $ESSID \nIP: \t"`ifconfig $INT | grep inet | cut -c 21- | cut -f 1 -d " "` a $ESSID \nIP: \t"`ifconfig $INT | grep inet dhcpcd $INT && echo -e "Conectado }

# Paso de parametros for i in "$@"; do if [ "$i" = "-i" ]; then INT="$2" elif [ "$i" = "-h" ]; then echo "Uso: wireless.sh [OPCION]" echo -e "Automatiza el proceso de conexion a redes inalambricas\n" echo -e "Automatiza el proceso de conexion a redes inalambricas\n" echo -e " -i <if>\t Especifica una interfaz de red." ESSID de las redes encontradas. echo -e " -i <if>\t Especifica una interfaz de red." #Busca echo -e " -h\t Esta ayuda" por algun perfil conocido en base al echo -e " -h\t Esta ayuda" for i in ${ARRESSIDS[@]}; do echo -e " -v\t version" echo -e " -v\t version" exit 0 PROFILE=`grep -v \# $CONFIG | grep $i | cut -f2 -d=` exit 0 elif [ "$i" = "-v" ]; then elif [ "$i" = "-v" ]; then if [[ $PROFILE != "" ]]; then echo "wireless.sh v"$VER echo "wireless.sh v"$VER echo -e "Escrito por Nef Garcia, Hector Acosta, Oscar Estrada y Emanuel Lauria.\n" echo -e "Escrito por Nef Garcia, Hector Acosta, Oscar Estrada y Emanuel L break echo -e "Agradecimientos: A Lorenzo Bivens por el caf y el ancho de banda." "Agradecimientos: A Lorenzo Bivens por el caf y el ancho de ban fi echo "Este es software libre. No hay garantia para ningun proposito." echo -e es software libre. No hay garantia para ningun proposito." echo "Este done exit 0 exit 0 fi fi done done

if [[ $PROFILE != "" ]]; then j=0 for i in `grep essid=$PROFILE -A 2 -B 1 $CONFIG | cut -f 2 -d =`; do ARRPERFIL[$j]="$i" let j=($j+1) done print ${ARRPERFIL[0]} fi

ProgramacinenBash
28/Febrero/2006

GULTec

http://linux.mty.itesm.mx

Tabla de Contenido
1.Introduccin y Motivacin 2.Conceptos Bsicos

4. Redireccin de E/S

Stdout Stderr Stdin Arreglos Funciones

Invocacin, Estructura y Salida Carcteres Especiales Carcteres de Control Eptome ejecutable Nuestro primer scriptsn Variables Parmetros Posicionales Uso de comillas If Case (switch) For While y Until
http://linux.mty.itesm.mx

6.Temas Avanzados

3.Instrucciones de Control

GULTec

28/Febrero/2006

Introduccin y Motivacin

BASH Bourne Again Shell


Intrprete de comandos. Interfaz entre el usuario y el Sistema Operativo. Potente lenguaje de programacin interpretado.

Por qu habra de usarse?


Distintas necesidades, distintas soluciones. Conocimiento de la consola Habilidades en Administracin de Sistemas (Automatizacin) Conocimiento del sistema y capacidad para arreglarlo Smamente prctico y sencillo

Cuando no debera usarse?


Aplicaciones de alto consumo de recursos y matemticas Programacin compleja (Programacin estructurada) Aplicaciones crticas Seguridad Estructuras de datos Redes Software Propietario
http://linux.mty.itesm.mx 28/Febrero/2006

GULTec

Conceptos Bsicos

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Invocacin, Estructura y Salida


Invocacin mastercool@utopia ~ # chmod 744 script.sh mastercool@utopia ~ # ls -l script.sh -rwxr--r-- 1 root root 2598 Feb 30 25:27 script.sh mastercool@utopia ~ # ./script.sh mastercool@utopia ~ # bash script.sh Estructura #!/bin/bash ...variales, instrucciones, etc... exit <exit_status>? Salida <<EOF>> exit exit 0 exit 1 exit $x
GULTec http://linux.mty.itesm.mx 28/Febrero/2006

Carcteres Especiales
Comentarios #ste es un comentario # ste tambin comando # Pero ste... ste igual lo es : NO-OP y otros usos. Separador de comandos (;) Comando1 ; comando2 ; comando3

Comillas sencillas (), completas ('') y carcter de escape (\) Mantienen las propiedades de los carcteres. Mantiene algunas de sus propiedades '' Mantiene todas sus propiedades \ Utilizado como para un solo carcter
GULTec http://linux.mty.itesm.mx

STRING 'STRING' \x, x, 'x'


28/Febrero/2006

Carcteres Especiales
Otros carcteres: ! * $ $*, $@ | & && || $*, $@ ~ = == != =~ > < >> 2> &> <<
GULTec

Negacin Comodn para expansin de nombres de archivos Referencia al valor de una variable Parmetros posicionales Pipe Correr proceso en el fondo AND Lgico OR Lgico Parmetros posicionales Directorio HOME Igual a Igual a igual a Dieferente a Igual a la expresin regular ... Redireccin y comparacin Redireccin

http://linux.mty.itesm.mx

28/Febrero/2006

Carcteres de Control

Ctrl + c d l z Terminacin. Finaliza un proceso corriendo al frente. EOF. Limpia la terminal Detiene un proceso en ejecucin y lo manda al fondo

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Eptome Ejecutable
cat [OPCIONES] [ARCHIVO]

Concatena archivos e imprime en la salida estndar echo [OPCIONES] [STRING]

Despliega una lnea de texto grep [OPCIONES] [PATRN] [ARCHIVO]

Imprime las lneas que cumplen el patrn especificado cut [OPCIONES] [ARCHIVO]

Remueve secciones de cada lnea de un archivo sort [OPCIONES] [ARCHIVO]

Ordena las lneas de un archivo de texto uniq [OPCIONES] [ENTRADA [SALIDA]]

Remueve lneas duplicadas de un archivo ordenado de texto


GULTec http://linux.mty.itesm.mx 28/Febrero/2006

Nuestro Primer Scriptsn


#!/bin/bash echo "Haciendo cat al archivo" cat archivo.txt #ordenamos archivo.txt sort archivo.txt > archivo.txt.ordenado #desplegamos echo "Ahora en orden..." cat archivo.txt.ordenado #quitamos duplicados uniq archivo.txt.ordenado archivo.txt.unico echo "Ahora sin duplicados..." cat archivo.txt.unico echo "fin" rm archivo.txt.ordenado archivo.txt.unico archivo.txt 5 5 3 2 3 4 1

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Nuestro Primer Scriptsn


Scriptsin regresa: mc@tamales ~ $ ./scriptsin.sh Haciendo cat al archivo 5 5 3 2 3 4 1 Ahora en orden... 1 2 3 3 4 5 5 ... ... Ahora sin duplicados... 1 2 3 4 5 fin elauria@humboldt ~ $

Scriptsn est bien tonto... mc@lux$ sort archivo.txt | uniq

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Variables
Asignacin: VAR=1 STRING=hola mundo Referencia: $X echo $VAR $STRING 1 hola mundo Asignacin por referencia: VAR2=$VAR Asignacin por salida estndar: FILE=`cat archivo.txt` PARS=`grep 5 archivo.txt` OUTPUT=$(ls -l) Variables de Ambiente: export BAR Asignacin por entrada estndar: read VAR Variables de tipo entero: x=2235 x=2235+1 let x += 1 #x = 2236

X= 2 Y =foo

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Parmetros Posicionales
mastercool@archtech #./skr1ptz0r.sh -u exploit -crash -emerge gentoo $0 $1 $2 $3 $4 $5 $0 $1 $2 ... $9 ${10} ${11} ... $* $@ shift Nombre del script (skr1ptz0r.sh) Primer parmetro (-u) Segundo parmetro (exploit) Noveno parmetro Dcimo parmetro Onceavo parmetro

Referencia a todos los parmetros Igual que $* Recorre los parmetros una posicin hacia la izquierda ($1 despus del shift es igual a $2 antes del shift.)

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Uso de Comillas
Las comillas mantienen el significado literal de las cadenas de carcteres. Comillas dobes ( - Comillas parciales $variable es dif. de $variable. Ejemplo: variable=1 2 3 4 5 funcion_x $variable funcion_x $variable

#$1 es 1, $2 es 2... #$1 es 1 2 3 4 5

Comillas sencillas ( - Comillas completas o Full Quoting) Mantienen el significato literal por completo. Usando $ pierde su significdo, se interpreta como $. mastercool@nano ~ $ export FOO=1 mastercool@nano ~ $ echo $FOO 1 mastercool@nano ~ $ echo '$FOO' $FOO
GULTec http://linux.mty.itesm.mx 28/Febrero/2006

Instrucciones de Control

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

If
If list; then list elif list; then list else list fi

Ejemplo: if [ $1 = -h ]; then echo Ayuda: echo Platela. elif [ $1 = -v ]; then echo Versin 1/0 elif [$1 = -p ]; then VAL_PARAM = $2 fi

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Case
case word in [ [(] pattern [ |pattern ] ... ) list ;; ] ... esac

Ejemplo: #!/bin/bash case "$1" in "1") echo uno ;; "2") echo dos ;; esac mastercool@pochito ~ # ./case.sh 1 uno mastercool@pochito ~ # ./case.sh 2 dos

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

For
for name [ in word ] ; do list; done

Ejemplo: for i in `cat archivo.txt`; do if [ $i = 5 ]; then echo 3 >> archivo2.txt else echo $i >> archivo2.txt fi done Lo que es lo mismo que: mastercool@nemesis# sed s/5/3/ archivo.txt

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

While y Until
while list; do list; done until list; do list; done

Ejemplo: #!/bin/bash # Using 'shift' to step through all the positional parameters. # Name this script something like shft, #+ and invoke it with some parameters, for example # ./shft a b c def 23 skidoo until [ -z "$1" ] # Until all parameters used up... do echo -n "$1 " shift done echo # Extra line feed. exit 0
GULTec http://linux.mty.itesm.mx 28/Febrero/2006

Redireccin de E/S

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Salida Estndar (stdout)


Redirigiendo la salida de un programa a un archivo de texto: Sobreescritura: ls -l > archivos.txt cat archivos.txt 1> otro_archivos.txt : > archivo_vacio.txt FILENAME=ls.log ls -l > $FILENAME Adicin: ls -l >> archivos.txt cat archivos.txt 1>> otro_archivos.txt ls -l >> $FILENAME Redirigiendo la salida de un programa a la entrada de otro: ls -l | grep archivo.txt cat archivo.txt | sort | uniq

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Salida Estndar de Errores (stderr)


Redirigiendo la salida de errores de un programa a un archivo de texto:

gcc programa_chafo.c 2> errores_de_compilacion.log dhclient 2>> dhclient_errors.log

Se puede redirigir stderr y stdout al mismo tiempo:

programa &> logfile.txt Y tambin se puede redirigir stderr a stdout! Programafallon 2>&1 stdout.txt

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Entrada Estndar (stdin)

Se puede cambiar la entrada estndar (teclado) por un archivo de texto:

grep palabra < filename.txt ./script.sh < entradas.txt

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Temas Avanzados

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Arreglos

En bash podemos definir arreglos, pero nicamente unidimensionales Asignacin: ARR[xx]=valor ARR=( 1 2 3 4 5 6 7 8 9 10 ) for i in `seq 0 9`; do arr[$i]=$i done read -a ARR Referencia: echo Primer valor: ${ARR[0]} echo El arreglo completo: ${ARR[@]}

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Funciones
function_name () { command... }

Ejemplo: imprime_testa () { echo $@ }

imprime_testa hola mundo

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Sobre la presentacin
Esta presentacin fue creada por y para el Grupo de Usuarios de Linux del Instituto Tecnolgico y de Estudios Superiores de Monterrey (GULTec) Campus Monterrey. Descarga en http://linux.mty.itesm.mx/pub/presentaciones/ http://linux.mty.itesm.mx/~elauria/ Por fines de clarificacin, mastercool es el cracker de todos los tiempos... Nadie le conoce pero an as es temido. Se cree que siempre est vigilandonos y suele dejar mensajes de saludo en tu mquina cuando menos lo esperas.

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Fuentes literarias
Estructura y algunos ejemplos tomados de The Advanced Bash Scripting Guide. http://www.tldp.org/LDP/abs/html/ Sintaxis y definiciones de: http://unixhelp.ed.ac.uk/CGI/man-cgi?bash http://unixhelp.ed.ac.uk/CGI/man-cgi?cat http://unixhelp.ed.ac.uk/CGI/man-cgi?grep http://unixhelp.ed.ac.uk/CGI/man-cgi?cut http://unixhelp.ed.ac.uk/CGI/man-cgi?sort http://unixhelp.ed.ac.uk/CGI/man-cgi?uniq etc... A todos ellos, gracias.

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Sobre el Autor
Nombre: Emanuel Lauria Izundegui. Sitio Web: http://linux.mty.itesm.mx/~elauria/ Correo: emanuel.lauria@gmail.com Jabber: emanuel.lauria@jabbermx.org

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

<<EOF>>

GULTec

http://linux.mty.itesm.mx

28/Febrero/2006

Vous aimerez peut-être aussi