Archivo para la Categoría ‘Scripting’

Barra de progreso en tus scripts BASH

Jueves, Julio 9th, 2009

En estos días he estado realizando un script interactivo en BASH y decidí darle una buena presentación gráfica en el terminal usando dialog como generador de interfases , una de las dudas que me surgió es como colocar una barra de progreso en uno de los pasos que se tarda un poco de tiempo a manera de tener una presentación un poco más agradable al usuario.

Desgraciadamente la documentación de dialog no explora muy bien esta parte, así que me dedique a investigar y esto fue lo que obtuve:

Antes de continuar debes tener dialog instalado:

yum install dialog

Y ahora mediante el siguiente comando podemos probar más o menos el uso de la barra de progreso

find /etc/ -name *.conf 2>&1  | awk ‘{ print (Total+=1)/3.7,”=>”,$0}’ | dialog –gauge “Espere un momento…” 7 70

En donde el valor 3.7 es un factor que tiene que ser calculado mediante ensayo y error dependiendo del tiempo que se considere que va a tomar el comando find en ejecutarse, en este caso y para mi computador el valor 3.7 fúe el adecuado, como se ve no es un método muy adecuado para tener una barra de progreso debido a que no sabemos en realidad cuanto puede tardar nuestra acción en el computador de cada quien.

Otra caso de uso, puede ser el del siguiente script, el cual va a ir sumando 1% por cada segundo en la barra de progreso:

#!/bin/bash

i=0
while [ $i -le 100 ]
do
echo $i | dialog –gauge “Progreso…” 7 30
i=`expr $i + 1`
sleep 1
done

Usando modificaciones al script pasado puede darse una mejor manera de usar la barra de progreso en dialog, ya que por ejemplo y solo de manera academica ( no creo que sea un caso muy útil de uso ),  la variable $i podría ser el porcentaje de memoria RAM o CPU usado ( previamente calculado con otra operación ).

Otra manera que consegui de hacer una barra de progreso, pero sin usar dialog, más al estilo de la que se muestra cuando se usa el comando wget, se puede conseguir en:

http://www.theiling.de/projects/bar.html

La barra de progreso se ve más o menos así:

Barra de progreso

Para conseguir más información de su uso o descargar el código, visita el enlace anterior.

Condicionales en BASH

Jueves, Enero 22nd, 2009

Hace unos días me encontraba haciendo unos scripts en BASH y necesitaba realizar algunas comprobaciones con un simple if, sin embargo tuve un lapsus mental y se me olvido como revisar la página del manual en donde explican exactamente lo que es cada condicional y tuve que resolver googleando.

Hoy me acorde de repente la cuestión y para al menos no tener que googlear de nuevo y saber donde la puedo encontrar de nuevo fácilmente en caso de otro olvido, la coloco acá:

man test

En realidad test es un comando para comparar archivos sin embargo sus condicionales son exactamente iguales a los usados en programación de BASH script ( o tal vez internamente el interprete usa test para hacer las comprobaciones ), así que sirve, además de que están bien explicados :-D

Actualización automática de Blacklist en Dansguardian

Martes, Agosto 5th, 2008

Junto a un compañero de trabajo hemos realizado un cochino script en Bash que permite mantener actualizadas de forma automática tus archivos de blacklist ( listas negras ).

Cualquier comentario o recomendación usa el sistema de comentarios del blog, por favor.

El Script pueden verlo en formato html en:

http://www.richzendy.org/scripts/update_blacklist.sh.html

PassReminder

Miércoles, Octubre 10th, 2007

He desarrollado PassReminder, que es un sencillo script que ayuda en funciones administrativas en organizaciones que usan autenticación mediante algún servidor LDAP como  Fedora Directory Server u otro servidor LDAP ( a pesar de que se probo solo con FDS, tal vez funcione como está o con pocas modificaciones en openldap ), ya que permitirá poder enviarle un correo electrónico a cada usuario del directorio al cual tenga a punto de expirar su cuenta, recordando que debe cambiar su contraseña.

Si desea saber más al respecto, descargar el script, saber como instalarlo puede ver el siguiente link:

http://www.proyectofedora.org/wiki/index.php/Fedora_Directory_Server_PassReminder

Si tiene algún tipo de pregunta al respecto, por favor hagamelo saber.

Script para Actualizar tu Dominio en Zoneedit.com

Miércoles, Noviembre 22nd, 2006
#! /bin/sh 

#

# This script update your dinamic ip in Zoneedit

# Execute this script in a cron job each 15 or 10 minutes…

# ( whatismyip.org ban people for more to 3 request in 10 minutes )

# crontab -e

# */15 * * * * /your/script/path/update_host.sh

#

# comments? mail me to : Richzendy@gmail.com

###############################################

 

USER=”your zoneedit user”

PASSWD=”your zoneedit password”

DOMAIN=”your wanna update this domain name in zoneedit”

# path for save your ip’s data base ( edit is variable… )

DB_PATH_FILE=”/var/log/ip_DB”

# Search your actual ip

IP_NEW=`curl -s http://www.whatismyip.org/`

# you need permissions over this file

IP_OLD=`tail -n 1 $DB_PATH_FILE`

 

if [ $IP_NEW == $IP_OLD ] ; then

exit 0

else

# update your host

/usr/bin/wget -O – –http-user=$USER –http-passwd=$PASSWD “http://dynamic.zoneedit.com/auth/dynamic.html?host=$DOMAIN” &> /dev/null

echo $IP_NEW >> $DB_PATH_FILE

fi

 

 

Grabalo como, update_host.sh y dale permisos de ejecución, Alguna sugerencia? colocala en los comentarios :-/

Muine XChat Announcer 0.1 release

Sábado, Septiembre 23rd, 2006

Ahora estoy usando un reproductor de música muy cool para gnome hecho en mono, se llama muine, es como la versión light de amarok, me mantiene actualizado mi audioscrobler ( hoy en día  last.fm ) via un plugin y me permite ver las letras de las canciones vía otro, lo que mas me agrada es que me mantiene organizada mi lista reproducción en forma de albums  y me muestra las caratulas de los mismos ( creo que se las baja de algún sitio ) o por orden alfabético de canciones, también me agrada que se pueda iconificar completamente ( lo trae por defecto ) y que hay un applet para la barra de gnome que ofrece control de el desde allí :-D .

Bueno el detalle es que me fui inmediatamente a buscar un plugin para xchat de el y encontré uno pero era muy feo ( creo que no me funciono ) así que decidí hacerme uno, pueden ver el script en formato html en el siguiente link:

http://richzendy.org/scripts/xchat_muine.html

Muine Xchat Script

El que lo use, por favor, envíeme sus comentarios, bugs o sugerencias, en los comentarios de este post, o a mi e-mail ( sabrán donde encontrarlo ), realmente les recomiendo este player, es muy liviano y fácil de usar ,el que use Fedora Core, pregunte por los repositorios de donde lo descargue vía yum :-D .

Ver vídeo del script en acción:

yes

Miércoles, Agosto 30th, 2006

este es un comando que me encontre de casualidad… cada dia consigues aqui en Gnu/Linux algo nuevo :-D

de su help:


**[richy@localhost ~]$ yes –help
Modo de empleo: yes [CADENA]…
o bien: yes OPCIÓN
Muestra repetidamente una línea con todas las CADENA(s) especificadas, o `y’.

–help muestra esta ayuda y finaliza
–version informa de la versión y finaliza

Comunicar bichos a <bug-coreutils@gnu.org>.**”

Lo cual en cristiano es que es un comando, que repite todo lo que le coloques como argumento en la consola, hasta que mates el proceso o que lo canceles con “control + c” y si no le das un argumento, solo repite la letra “y”

me parecio muy curioso este comando, si alguno se le ocurre alguna utilidad practica, por favor comuniquelo en los comentarios de este post.

por favor, no ejecuten este comando en el xchat mientras estan en un canal:

**/exec -o yes HOLA!**

o tampoco coloquen en su consola, o en cualquier otra:


 yes "quiero llenar el disco duro hasta el tope" &gt;&gt; /tmp/file &amp;

>:-)

Para mas info: man yes

rev

Martes, Agosto 15th, 2006

.ocinu le are on euq rop se ,xunil ed eroc le ne oyulcni ol neiugla is y abatisecen ol ,ozih ol euq le euq rop se etsixe is ograbme nis ,litu euq osoiruc sam ecerap em oñartxe yum odnamoc nu se ,saiconoc ol on y asoc arto odnacsub seugisnoc euq sose ed odnamoc nu se ver

.radnatse adilas al a adartne omoc amot sodacificepse nos on sovihcra o ovihcra nu is y !sever la odot acoloc ol riced se ,otxet ed ovihcra nu ed seretcarac sol ed nedro le ritrever arap evris selareneg sonalp ne y “ritrever” ed ominorca le omoc res a airdnev ver

…soiratnemoc sol ne otse noc erobaloc neiugla euq orepse ,odnamoc etse arap acitcarp dadilitu anugnin erruco em es on

…soiratnemoc sol ne otse noc erobaloc neiugla euq orepse ,odnamoc etse arap acitcarp dadilitu anugnin erruco em es on

=====Si usas Gnu/Linux y quieres leer de forma normal el post, ejecuta en tu consola el siguiente comando:=====

 

curl -s http://www.richzendy.org/files/rev | rev

Script ip mejorado

Martes, Abril 18th, 2006

Aqui les dejo el fruto de mi vagancia, anoche llegue con aburrimiento a la casa luego del trabajo y me coloque a mejorar un poco el script del otro dia, el que tenia mas comentarios que codigo y lo deje ahora con mas codigo que comentarios ;-D aqui les va:


#!/bin/sh
#Script que muestra la ip de una interface de red determinada
#o la puerta de enlace de la misma
#Para usar se le debe pasar el parametro de la interface al
#ejecutar el script, ejemplo:
#$./ip eth0
#$./ip route
#lo que daria como respuesta la ip de la interface eth0: 192.168.0.3
#o la ip de la puerta de enlace gw: 192.168.0.254
#este script produce una salida limpia, la cual puede ser usada por
#otros scripts, obvio que debe ser ejecutado con privilegios de root...
#esto tiene licencia GNU/gpl
#
# creado por Richzendy | http://www.Richzendy.org
#
# Agradecimientos a Rodríguez José Gregorio, Parte de su codigo se encuentra aqui :D
# 

#Validación del Usuario

if [ $USER != root ]; then
	echo "Este script debe ser ejecutado por el usuario root (super admin)"
else 

  if [ -z $1 ]; then
echo "Debe suministrar un argumento, USO: ./ip {eth0|eth1|ath0|wlan0|route}"
   else
  if [ $1 == route ]; then

ROUTE=`route -n| grep "^0.0.0.0"`

#Validar si la variable ROUTE no esta vacia ( es decir si existe un gateway )

    if [ -n "$ROUTE" ]; then
        echo "$ROUTE" | cut -b 17-32 | cut -d " " -f 1 

   else
        echo "No existe dirección IP de gateway"
    fi
  else
INTERFAZ=`ifconfig | grep $1`
PRUEBA=`ifconfig $1 2> /dev/null`
ERROR="$(echo $?  )"

#Validar si la variable INTERFAZ esta vacia ( es decir, si existe la interface )

  if [ -z "$INTERFAZ" ] || [ $ERROR == 1 ]; then 	

echo "Argumento \"$1\" invalido/Dispositivo no encontrado, USO: ./ip {ethx|athx|wlanx|route}"
echo "en donde el sufijo \"x\" ( ejem. ethx ) es un numero entero y debe corresponder para"
echo "interfase de red valida en el sistema."
else  

IP=`ifconfig $1 | grep "inet addr"`

#Validar si la variable IP esta vacia ( es decir, si existe una ip asignada ) 

  if [ -z "$IP" ]; then
        echo "La interfase esta activa, pero no tiene una direccion ip asignada"
  else

echo "$IP" | awk '1{print $2,$5 }' | awk -F :  '1{print $2 }'

  fi
  fi
  fi
  fi
fi

El script se encuentra abierto a sugerencias, cualquiera es valida.

Saber exactamente tu ip

Sábado, Marzo 25th, 2006

Copy/paste y grabar con el nombre de ip, darle permisos de ejecucion.



#!/bin/sh
#Script que muestra la ip de una interface de red determinada
#Para usar se le debe pasar el parametro de la interface al
#ejecutar el script, ejemplo:
#$./ip eth0
#lo que daria como respuesta la ip de la interface eth0: 192.168.0.3
#este script produce una salida limpia, la cual puede ser usada por
#otros scripts, obvio que debe ser ejecutado con privilegios de root...
#esto tiene licencia GNU/gpl
#
#creado por Richzendy
#
#http://www.Richzendy.org
ifconfig $1 | grep "inet addr" | awk '1{print $2,$5 }' | awk -F :  '1{print $2 }'

Tiene mas comentarios que codigo :-D

Get Adobe Flash playerPlugin by wpburn.com wordpress themes

Copyright © 2010 Richzendy.org. Search Engine Optimization by Star Nine. Distributed by Wordpress Themes