miércoles, septiembre 26, 2007

Uso de awk

Antes que todo, ¿que es awk? para ello visiten la información de wikipedia =P.
Ahora que ya sabemos, "dentramos a picar", como dicen los maestros, jjaja.

Cierto dia jugando con debian, por cierto caí en el lado obscuro y pase de la version sarge a la sid de un viaje (al principio quedo la cagá, pero weno, jaja) y como podrán sospechar tuve algunos inconvenientes, principalmente quedaron archivos de configuracion de paquetes desinstalados, ¿como supe esto? ejecutando:

Hamunaptra:~# dpkg -l |grep rc

dpkg -l muestra una lista de paquetes instalados en el sistema, si el paquete esta bien instalado la primera columna que muestra lleva el valor ii, algo asi:

ii paquete version descripcion

sino esta instalado o quedan archivos de configuración nos muestra rc, seguido por el nombre del paquete, versión y luego una descripción del mismo, algo mas o menos asi:

rc paquete version descripcion

como en mi caso el buscar por rc (grep rc) de la lista completa de paquetes instalados me arrojo una gran cantidad de paquetes desinstalados pero con archivos de configuracion en mi sistema, aquí, ante la paja de tener que eliminar los archivos uno a uno se me vino a la mente el utilizar la opcion que tiene aptitude para "purgar" los paquetes, (aptitude remove solo elimina el paquete, no sus archivos de configuracion), ya tenia solucionada una parte de lo que queria hacer, ya que al tener el nombre de paquete a eliminar ejecutaria:

Hamunaptra:~# aptitude purge (paquete) -y

la opcion "-y" es para que, cuando pregunta si desdeo eliminar el paquete se responda automaticamente que si, en vez de tener que apretar enter cada vez, automatizando el proceso :P

Como la lista de programas a eliminar era demasiado grande (unos 500 como mínimo) no era gracioso escribir aptitude purge para cada paquete, asi que recorde que habia un programa en debian que podia automatizar esto, el famoso awk.

Ahora debia tener un archivo con la lista de paquetes a eliminar, este lo obtuve asi:

Hamunaptra:~# dpkg -l |grep rc > borrar.txt

Ojo: "grep rc" tambien pone paquetes instalados (con ii al comienzo) porque contienen en la descripcion las letras "rc", pero son pocos asi que los elimine "a mano" antes de seguir:

Hamunaptra:~# nano borrar.txt

y dentro de nano, con el cursor en la linea a eliminar presione Ctrl + K para cada linea con ii al comienzo.
Si no me hubiese dado cuenta de esto podria haber eliminado paquetes que estaban bien instalados en el sistema :S (dejando mas la cantá jajaj)

Luego, Ctrl + X para salir y respondiendo con enter para guardar los cambios realizados.
Ahora la magia :P

Hamunaptra:~# awk -F " " '{print "aptitude purge " $2 " -y"}' borrar.txt >bye.sh

ahora la traducción, la opcion -F " " hace que awk me separe por columnas cada trozo de texto encontrado con un espacio de por medio, con esto la estructura de variables por columna seria asi:
$1= rc $2=
paquete $3= version $4= descripcion

como me interesaba tener el nombre del paquete utilice solo la columna 2 como variable, por eso el $2 dentro del comando, y con " >bye.sh" redireccioné la salida estandar (la pantalla) a un archivo donde guarde lo generado, ahora solo me queda ejecutarlo, para ello le doy permiso de ejecucion, con:

Hamunaptra:~#
chmod +x bye.sh

y lo ejecuto con

Hamunaptra:~#
./bye.sh

dejo que todo trabaje por si solo y voila problema solucionado, ahora queda reconfigurar el sistema con sid pero otro día les cuento que problemas me dio jajajaj.

martes, agosto 29, 2006

Creación de motd para algun server con linux

fui seducido por el lado obscuro de las distros de linux, adopte "debian" por el gran beneficio de las nunca tan bien ponderadas dependencias, probe otras distros como suse, redhat, fedora y por lo menos en fedora wevie un kilo pa instalar un programa, pq tenia fc4 y el paquete era pa fc5, tube q bajar toos las dependencias de mierda pa poder instalar ese programa m@r@ko ... en cambio en debian con un buen repositorio la hice corta, weno esto era a modo de introduccion no mas :P ahora me dejo de rodeos y me centro en el tema.
El motd es un archivo en el que se guarda el mensaje de bienvenida para cuando un usuario accede a una maquina determinada, por lo que para algunos entes administradores de sistemas amantes de la creatividad existe una pequeña ayuda para tunear este archivo, por ejemplo en debian el programa se llama figlet y lo podemos utilizar de la siguiente manera:

rodrigo@hamunaptra:~$ figlet welcome to the jungle









algo asi seria, y si queremos guardarlo en un archivo jugamos con la salida estandar asi:
rodrigo@hamunaptra:~$ figlet welcome to the jungle > wel.txt

despues de esto, abrimos el .txt y lo copiamos al archivo motd que esta en: /etc/motd
incluso como plus podemos jugar con los tipos de letras que trae el figlet, asi:

rodrigo@hamunaptra:~$ figlet -f speed welcome to the jungle
donde -f es la opcion para usar una fuente distinta a la por defecto y speed es la fuente escogida

agradecimientos a pablo, yo antes lo hacia en una pagina en internet pero como ta la utilidad al alcance, sale mejor :P