Documente Academic
Documente Profesional
Documente Cultură
| 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
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
Intrprete de comandos. Interfaz entre el usuario y el Sistema Operativo. Potente lenguaje de programacin interpretado.
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
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
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
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]
Imprime las lneas que cumplen el patrn especificado cut [OPCIONES] [ARCHIVO]
GULTec
http://linux.mty.itesm.mx
28/Febrero/2006
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
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
GULTec
http://linux.mty.itesm.mx
28/Febrero/2006
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
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... }
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