Para actualizar de Etch a Lenny en Sony Vaio VGN-CR160F.
1) apt-get update
2) apt-get dist-upgrade
3) El sistema ya no levanta debido a que no se carga el modulo para el disco duro. Manda como el mensaje de error siguiente:
Begin: Waiting for root filesystem...
Done.
WARNING boot device may be renamed. Try root = /dev/hda3
ALERT! /dev/hda3 does not exist. Dropping to a shell!
Check your root= boot argument (cat /proc/cmdline)
Check for missing modules (cat /proc/modules), or device files (ls /dev)
BusyBox v1.01 (Debian 1:1.01-4) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
/bin/sh: can't access tty; job control turned off
/ #
4) En el shell ejecutar: modprobe ide-disk; modprobe ide-generic; exit
5) Cargando los modulos anteriores el sistema termina de arrancar. Pero es necesario que esos modulos sean cargados siempre:
a) agregar al archivo /etc/initramfs-tools/modules, las lineas ide-generic e ide-disk
b) mkinitramfs -v -o /boot/initrd.img-2.6.22.14 2.6.22.14
6) Reiniciar
Recapitulando:
* video: Es necesario xserver-xorg-video-intel, aunque ya no asi el paquete 915resolution.
* sonido: Paquetes alsa* a versiones 1.0.15-2 o superiores.
* La interfaz Ethernet: Modulo r8169.
* Red inalambrica: Modulo mac80211, iwlwifi-4965
* motioeye: Modulo r5u870-0
martes, 4 de marzo de 2008
jueves, 21 de febrero de 2008
Eliminar de un nombre de archivo la extension..
#!/usr/bin/perl
#
# Eliminar de la cadena de nombre de un archivo
# la extension.
# El argumento es pasado en la linea de comando.
#############
@allwords = split(/\./, $ARGV[0]);
$ext = pop(@allwords);
foreach $item ( @allwords ){
print $item.".";
}
print "\n";
#
# Eliminar de la cadena de nombre de un archivo
# la extension.
# El argumento es pasado en la linea de comando.
#############
@allwords = split(/\./, $ARGV[0]);
$ext = pop(@allwords);
foreach $item ( @allwords ){
print $item.".";
}
print "\n";
lunes, 18 de febrero de 2008
Este link...
Learn 10 good UNIX usage habits
http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html
http://www.ibm.com/developerworks/aix/library/au-unixtips/?ca=dgr-lnxw13goodunixhabits&S_TACT=105AGX59&S_CMP=GR
Comandos
http://cb.vu/unixtoolbox.xhtml
http://www.oreillynet.com/linux/cmd/
Referencias
http://www.unix.org.ua/orelly/
http://bhami.com/rosetta.html
Redes sociales
http://systemadmin.es/
http://houseofsysadmins.ning.com/
Interesante
http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/
http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html
http://www.ibm.com/developerworks/aix/library/au-unixtips/?ca=dgr-lnxw13goodunixhabits&S_TACT=105AGX59&S_CMP=GR
Comandos
http://cb.vu/unixtoolbox.xhtml
http://www.oreillynet.com/linux/cmd/
Referencias
http://www.unix.org.ua/orelly/
http://bhami.com/rosetta.html
Redes sociales
http://systemadmin.es/
http://houseofsysadmins.ning.com/
Interesante
http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/
jueves, 17 de enero de 2008
Fecha formato unix a otro formato
#!/usr/bin/perl
#####################################
# Traduce de una fecha formato
# unix a fecha AAMMDDHHMMSS
#
#######################
print " Para salir escriba no \n";
while ( 1 ){
print " Introduce : ";
chomp($ARCH=);
if ( lc($ARCH) =~ /no/){
exit;
}
@timeData = localtime($ARCH);
#print " @timeData \n";
#Seconds,Minutes,Hours,Day,Months,years (since 1900),days( since sunday), Number of days since the start of the yer,Whether or not daylight savings is active
if (($timeData[5]-100)>=0 && ($timeData[5]-100)<=9){
print "0".($timeData[5]-100);
}
else{
print ($timeData[5]-100);
}
if (($timeData[4]+1)>=0 && ($timeData[4]+1)<=9){
print "0".($timeData[4]+1);
}
else{
print ($timeData[4]+1);
}
if (($timeData[3])>=0 && ($timeData[3])<=9){
print "0$timeData[3]";
}
else{
print "$timeData[3]";
}
if ($timeData[2]>=0 && $timeData[2]<=9){
print "0$timeData[2]";
}
else{
print "$timeData[2]";
}
if ($timeData[1]>=0 && $timeData[1]<=9){
print "0$timeData[1]";
}
else{
print "$timeData[1]";
}
if ($timeData[0]>=0 && $timeData[0]<=9){
print "0$timeData[0]";
}
else{
print "$timeData[0]";
}
print "\n";
}
==============
Ejemplo :
Para salir escriba no
Introduce : 1181715026
070613011026
Introduce : no
#####################################
# Traduce de una fecha formato
# unix a fecha AAMMDDHHMMSS
#
#######################
print " Para salir escriba no \n";
while ( 1 ){
print " Introduce : ";
chomp($ARCH=
if ( lc($ARCH) =~ /no/){
exit;
}
@timeData = localtime($ARCH);
#print " @timeData \n";
#Seconds,Minutes,Hours,Day,Months,years (since 1900),days( since sunday), Number of days since the start of the yer,Whether or not daylight savings is active
if (($timeData[5]-100)>=0 && ($timeData[5]-100)<=9){
print "0".($timeData[5]-100);
}
else{
print ($timeData[5]-100);
}
if (($timeData[4]+1)>=0 && ($timeData[4]+1)<=9){
print "0".($timeData[4]+1);
}
else{
print ($timeData[4]+1);
}
if (($timeData[3])>=0 && ($timeData[3])<=9){
print "0$timeData[3]";
}
else{
print "$timeData[3]";
}
if ($timeData[2]>=0 && $timeData[2]<=9){
print "0$timeData[2]";
}
else{
print "$timeData[2]";
}
if ($timeData[1]>=0 && $timeData[1]<=9){
print "0$timeData[1]";
}
else{
print "$timeData[1]";
}
if ($timeData[0]>=0 && $timeData[0]<=9){
print "0$timeData[0]";
}
else{
print "$timeData[0]";
}
print "\n";
}
==============
Ejemplo :
Para salir escriba no
Introduce : 1181715026
070613011026
Introduce : no
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
#!/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;
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.
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.
Suscribirse a:
Entradas (Atom)