domingo, 2 de septiembre de 2012

Curso scripting bash bucles (for-while-until)

Bueno esta es la entrada numero 4 de estos tutoriales tipo cursos que estoy realizando para entender un poco mas como funcionan los scripts escritos en bash y tambien para poder crear algunos.

Estos tutoriales se van basando en el conocimiento previamente adquirido,en las partes anteriores,asi que puedes revisarlas

Parte 1


Parte 2


Parte 3

En esta ocacion veremos los bucles for while y until

for

For es una instruccion mas en nuestro script programado para realizar una determinada accion en este caso for se refiere cual por cada elemento en determinada variable se repetirán determinadas acciones, esto hasta que lo haya hecho con todos los elementos indicados, entonces el ciclo habrá terminado y solo entonces.

Ejemplo de scipt

Los llamado for son mas que nada para contar

Por ejemplo para contar del uno al diez seria este un script usando for

#!/bin/bash # Hashbang
for i in 1 2 3 4 5 6 7 8 9 10 # Comienza instruccion
do # Termina instrucción
echo "Numero $1" # Se ejecuta la accion que convierte i en 1,2,3,etc y lo llamamos
done # Termina el script

Pero si quisieramos contar del 1 al 1000?

No se preocupen para eso solo se usaria esta sintaxis

#!/bin/bash # Hashbang
for i in {1 .. 1000} # Comienza la instruccion
do # Termina la instruccion
echo "Numero $i" # LLamamos i que for lo convirtio en 1,2,3,etc
done # Termina el script

Bucle infinito con for

El bucle infinito es algo que nunca terminal y en bash se define así


#!/bin/bash
for (( ; ; ))
do
   echo "Bucle infinito solo se cierra con CTRL+C "
done

Uso util

Bien,for no solo sirve para ese tipo de cosas ya que se puede fucionar con lo que previamente hemos visto y podriamos crear un script como este,como por ejemplo para saber cuantos archivos de configuración tenemos en /etc

#!/bin/bash # Hashbang
for file in /etc # Comienza la instruccion "para archivo en /etc"
do # Termina la instrucción
        if [ "${file}" == "/etc" ] # Si file es /etc...
        then
                archivos=`ls /etc | grep -c .conf` # Ejecuta este pipe
                echo "Tienes  ${archivos} archivos de configuracion en ${file}" # Ahora lo llama y se añade texto
                break # Comando break termina con el bucle
        fi # Termina condición if
done # Termina bucle

Este script nos enumera los archivos de confgiruracion que como sabemos o si no saben los archivos de configuracion de Linux y otros Unix se guardan en /etc

Esto seria lo mismo que usar este pipe

ls /etc | grep -c .conf

Pero bueno ese es un ejemplo otro seria este para listar los archivos pero ponerle un texto antes


#!/bin/bash
for i in $( ls );  # i toma el valor ls
echo Archivo: $i # Llamamos i
done # Termina el código y i puede tomar un nuevo valor


Bien un script util

Si tienen el programa host instalado(parecido a ping)

Cheken este script

#!/bin/bash

for HOST in www.itimetux.com www.google.com 
do
  echo "##################"
  echo $HOST
  echo "##################"
  
  /usr/bin/host $HOST # Edita esta parte " busca con whereis host"
  echo "##################"

done

También lo podemos hacer con ping y mas util cheken

#!/bin/bash

echo "Control+C para pasar al siguiente"

for PING in www.itimetux.com www.google.com 
do
  echo "-------------------"
  echo $PING
  echo "-------------------"
  
   /bin/ping $PING # Edita esta parte busca el ejecutable con "whereis ping"
   echo "########################################"

done




While

While es una instrucción que sirve para generar bucles, en lq cual la instrucción se ejecuta de forma repetida hasta que se cumpla una condición.
While cerciorara que se cumpla la condición logica y si se cumple se ejecutara lo que este entre do y done.

Ejemplo de bucle

Por ejemplo vamos ha hacer un script para hackear (fake),los scripts para pentest normalmente se escriben en perl,python o lua pero vamos ha hacer algo sencillo

#!/bin/bash
termina=40000
i=0;
while [[ $termina -gt $i ]]
do
echo Probando $i passwords
let i=$i+1
done
echo 'No se encontraron coincidencias'

Lo que hace es mostrar lo que haría un brute force o ataque con fuerza bruta,pero en realidad solo esta contando del 0 al 40000,lo explico

#!/bin/bash # Hashbang
termina=40000 # Donde termina
i=0; # Donde comienza
while [[ $termina -gt $i ]] # La estructura while añadiendo el formato -gt(que veremos mas adelante)
do # Inicia lo que queramos ejecutar
echo Probando $i passwords # Llamamos a i y añadimos texto
let i=$i+1 # let se usa para poder trabajar con números(lo veremos mas adelante) se suma por 1
done # Termina lo que queramos ejecutar
echo 'No se encontraron coincidencias' # Se ejecuta algo nuevo

Bucle infinito while


#!/bin/bash
while :
do
   echo "Bucle infinito solo se cierra con CTRL+C "

done


Until

El bucle until es igual a while podemos usar esta estructura igual

#!/bin/bash

numero=0

until [ $numero -gt 40000 ]; do # Se usa until
    echo "Probando $numero"
    let numero=$numero+1
done

Eso es todo por ahora


No hay comentarios.:

Publicar un comentario

Los comentarios serán revisados antes de ser publicados.