jueves, 20 de diciembre de 2007

Expect interactivo

Expect es genial para algunas actividades, pero en ocasiones se requiere que sea interactivo. Ejemplo:

#!/usr/bin/expect -f
#

set force_conservative 0 ;# set to 1 to force conservative mode
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}


set timeout 100
spawn ssh -l user1 [lindex $argv 0]
match_max 1000
for {} 1 {} {
expect timeout {
send_user "Problema de comunicacion \r"
exit
} "(yes/no)?" {
send "yes\r"
} "password:" {
send "mypassword\r"
break
}
}


expect -exact "\]$ "
send -- "Modo interactivo. Teclea 'salir' para continuar\n"
interact "salir" return
expect -exact "\]$ "
send -- "exit\r"
expect eof

lunes, 10 de diciembre de 2007

Tips & Trick sobre Perl

Instalar un modulo:

perl -MCPAN -e 'install Apache::Test'


Leer el contenido de un archivo

open FH1, "./nombre.arch" || die " Error al abrir archivo ";
while( < FH1 >){
chomp;
.
.
.
}
close FH1;

Crear un hash de hash apartir del contenido de un archivo
%arreglo=();
open FH, "archivo" || die " Error al abrir archivo ";
while () {
chomp;
if ( ! /^#/ ) {
($campo, $valor)=split(/:/,$_,-1);
if ( $campo =~ /FS/ ) {
$llave=$valor;
}
$arreglo{$llave}{$campo}=$valor;
}
}
close FH;


Imprimir el contenido de hash de hash
foreach $llave ( keys %arreglo ){
foreach $elemento ( keys %{$arreglo{$llave}} ){
print "$elemento = $arreglo{$llave}{$elemento} \n";
}
}

imprimir un elemento de un arreglo de manera aletoria

#!/usr/bin/perl

@array=("1","tres","4","cinco");
print $array[int ( rand(0+@array))];


llamar a system

if (($pid=fork()) == 0 ){
@args = ("/ruta/comando","arg1","arg2");
system(@args) == 0 or die "system @args failed: $?";
exit;
}
wait;

miércoles, 5 de diciembre de 2007

QUALSTAR TLS-6460 con Bacula

Estos fueron de manera general los pasos para instalar Bacula en un sistema Debian Lenny con un robot de cintas QUALSTAR TLS-6460.

A manera de introduccion, el sistema de respaldos de Bacula tiene 4 grandes componentes:

= Director: cerebro de todos los componentes.
= Storage daemon: demonio encargado del manejo de los dispositivos de almacenamiento (a disco, a cinta, a archivos).
= File daemon: encargado de la realización del respaldo de los archivos. Este componente es tambien conocido como el cliente.
= Console: consola de administracion.


Nota: En esta configuracion el director, el storage daemon y la consola estan en el mismo servidor. Esta guia no esta excenta de errores y/o mejoras, usela bajo su responsabilidad.


1) Instalacion de driver para fibrechanel.

2) Identificacion de los dispositivos de cinta. Esto lo puede hacer mediante el comando mtx. Las cintas normalmente estan ligadas a /dev/st0 y /dev/nst0; son el mismo dispositivo con la diferencia que el primero rebobina la cinta después de cada uso y en el caso del segundo no. Ejemplos:

mtx -f /dev/sg0 status -----> la libreria completa
mt -f /dev/st0 status -----> el status del primer driver

3) Instalacion de Mysql

apt-get install mysql-common mysql-server

4) Instalacion de Bacula

apt-get install bacula-director-mysql bacula-sd bacula-fd

5) Configuracion del Storage Daemon (/etc/bacula/bacula-sd.conf):

- Asignar el password correcto en la definicion de Director y monitor.
- Esta es mi definicion de device

Device {
Name = Drive-1 #
Drive Index = 0
Media Type = SDLT 600
Archive Device = /dev/st0
}

Note que esta definicion variara dependiendo de la cantidad de drivers que tenga el robot o incluso del robot que se trate.

6) Configuracion del Director:

- Elimine en la definicion de director la linea DirAddress
- Igualar la definicion de Storage del archivo de configuracion del Director con la definicion en el Strorage Daemon. Ejemplo:

Storage {
Name = Drive-1
# Do not use "localhost" here
Address = miserver # N.B. Use a fully qualified name here
SDPort = 9103
Password = "XXXXXXXXXXXXXXXXXXX" # password for FileDaemon
Device = Drive-1
Media Type = SDLT 600
}

- En la definicion de console, asignar el password correcto.

- Este es opcional. Definicion de Pool. Defini un pool para cada drive, y un pool para historicos, con la finalidad de que sea mas facil la administracion de cintas. Aqui parte de esa configuracion:

Pool {
Name = Grupo1
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 365 days # one year
Label Format = Grupo1a_
}

Pool {
Name = Grupo2
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 730 days # two year
Label Format = Grupo2a_
}

Pool {
Name = Historico
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 1825 # 5 years
Label Format = Historico_
}

7) Reiniciar al Director y al Storage Daemon

/etc/init.d/bacula-director start
/etc/init.d/bacula-sd start

8) Debera instalar algun cliente a respaldar, definir dicho cliente en la configuracion del Director.

9) La consola (bconsole) puede ayudarle a administrar los jobs de respaldo.

viernes, 30 de noviembre de 2007

Genera password con ayuda de perl

#!/bin/perl

@chars = ( "A" .. "Z", "a" .. "z", 0 .. 9, qw(! @ $ % ^ & *) );
print join("", @chars[ map { rand @chars } ( 1 .. 8 ) ]);


Nota: Cortesia de Perl Cookbook.

lunes, 26 de noviembre de 2007

cdrecord..

# cdrecord -v -dev=ATA:1,0,0 -eject -data image.iso

jueves, 22 de noviembre de 2007

Password root livecd CentOS

A diferencia de algunos otros livecd donde un 'sudo su - ' es suficiente para poder obtener privilegios de administrador, CentOS usa un password que es:

12qwaszx

sábado, 11 de agosto de 2007

Beryl en Debian 4.0

* Beryl

1) Agregar repositorio de Beryl en /etc/apt/source.lists

deb http://debian.beryl-project.org/ etch main

2) Modificacion de configuracion de Xorg

Asegurarse que se hace referencia al modulo glx en la seccion Module

Load "glx"



Agregar en la seccion Device

Section "Device"
.
.
.
Option "RenderAccel" "true"
Option "AllowGLXWithComposite" "true"
Option "AddARGBGLXVisuals" "true"
EndSection


Agregar al final del archivo de configuracion:

Section "Extensions"
Option "Composite" "Enable"
EndSection


3) Instalar Beryl

apt-get install beryl beryl-manager

4) Beryl cada vez que iniciemos sesion:
system --> Session --> New Beryl-manager comando beryl-manager
system --> Session --> New Beryl comando beryl-glx


Nota: JAC gracias ;)

martes, 7 de agosto de 2007

Sony Vaio VGN-CR160F con Debian 4.0

Esta pagina esta basada en mi experiencia de ejecutar Debian GNU/Linux en Sony Vaio VGN-CR160F; pero si deseas usar cualquier otro sistema operativo en tu maquina, quiza alguna parte de esto te sea de utilidad.


Nota: Advierto que esto no esta excento de fallos, asi que leelo y usalo bajo tu responsabilidad. La pagina ha sido escrita sin acentos.


Contenido

Caracteristicas principales
Instalacion de sistema base (Debian 4.0)
Configuracion especial


Caracteristicas principales:

* Procesador Intel® CoreTM 2 Duo T7100 con Tecnología Móvil Intel® Centrino® Duo.
* Disco duro de 120GB2 SATA
* 2GB RAM.
* Pantalla ancha 14.1” con Tecnología XBRITETM de Sony
* Unidad óptica integrada DVD±R Doble Capa/DVD±RW
* Interfaz digital i.LINK® (IEEE 1394)5 S400


Instalacion del sistema base Debian 4.0

El medio de instalacion fue CDROM, al hacerlo sin opciones marca el error "No common CD-ROM drive was detected", y es debido a que hay un conflicto con el driver cargado para el Disco Duro y para el CDROM. Para evitarlo encontre que debi dar un argumento en la linea de boot.

boot: install libata.atapi_enable=1

Eso fue suficiente para permitir una instalacion simple. En este paso ten en cuenta tus propias opciones de instalacion.

Configuracion especial


Actualice mi kernel a la version 2.6.22.14 ( creandolo al estilo debian ) debido a que tenia problemas para detectar el motion eye y el WiFi. Asegurate que esten habilitadas las opciones CONFIG_SONY_LAPTOP y CONFIG_SONYPI.

Algo que he notado que falla son las teclas especiales (Bl Num, Bl Des, etc.) que tiene la laptop.


* Video:

El dispositivo es Mobile Intel 965GM Express Chipset Family. Para usar una resolucion de 1280x800 ( la misma que usa Windows Vista), hice lo siguiente:

1. Instalacion de los paquetes adicionales
xserver-xorg-video-intel ( contiene el drive intel)
915resolution ( modifica la resolucion de chipsets de Intel )


2. Definicion de la resolucion deseada en el archivo /etc/default/915resolution

XRESO=1280
YRESO=800


3. Modificacion de la configuracion del servidor X's en el archivo /etc/X11/xorg.conf en la seccion de Device, Drive intel por vesa.

Section "Device"
Identifier "Generic Video Card"
# Driver "vesa"
Driver "intel"
BusID "PCI:0:2:0"
EndSection


* Sonido:

lpsci reporta como dispositivo:

00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 03)

1) La lista de modulos:
snd
snd_hda_intel
snd_mixer_oss
snd_page_alloc
snd_pcm
snd_pcm_oss
snd_timer
soundcore

2) En archivo /etc/modprobe.d/alsa-base adicione:
options snd-hda-intel model=auto
3) Actualize los paquetes alsa* a versiones 1.0.15-2, debido a que hay problemas con los modulos de sonido, porque es reconocido el dispositivo, es cargado correctamente el driver, no presenta error durante la reproduccion de archivo, sin embargo no hay sonido.


* La interfaz Ethernet:

Sin problemas con el driver r8169 (Gigabit Ethernet driver 2.2LK-NAPI)


* Red inalambrica

El dispositivo es: Intel(R) Wireless WiFi Link 4965AGN.

a) Habilitar el modulo mac80211 necesario para iwlwifi en el kernel.
b) Este howto http://www.intellinuxwireless.org/?p=iwlwifi&n=HOWTO-iwlwifi. La version usada de los driver son iwlwifi-1.2.0 y iwlwifi-4965-ucode-4.44.1.18.
c) Reinicie y el dispositivo es detectado correctamente
d) Adicionar configuracion a /etc/network/interfaces para que automaticamente al momento de arrancar tenga disponible la red inalambrica.


* Motion Eye

El dispositivo de motion eye reportador por lsusb:

Bus 006 Device 002: ID 05ca:1839 Ricoh Co., Ltdr5u870-VCC6

a) $ tar xjvf r5u870-0.20.tar.bz2
b) $ cd r5u870-VCC6/
c) $ make
d) # make install
e) Asegurarse que cargar los modulos r5u870.ko, videodev, video-buf, v4l1-compat y v4l2-common.
f) # cp ./r5u870-VCC6/r5u870_1839.fw /lib/firmware
g) # chmod 666 /dev/video1
h) Reiniciar y verificar que es detectado el motion eye. Debera ver en el dmesg algo asi:

kernel: usbcam: registering driver r5u870 0.10.0
kernel: r5u870-0: Detected Sony VGP-VCC6
kernel: r5u870-0: Unexpected microcode version (exp:0113 got:0030)
kernel: usbcore: registered new interface driver r5u870
kernel: meye: using 32 buffers with 600k (19200k total)for capture
kernel: usbcore: registered new interface driver usblcd



i) $ xawtv -c /dev/video1 -geometry 320x240

j) Instalar motioneye y motion. Ajustar en /etc/motion/motion.conf el dispositivo y ademas poner los permisos o el directorio correcto para la opcion target_dir.
k) motion


Pendiente aun mas detalles de configuracion de los dispositivos.