La imagen clasica de las relaciones procesos-tablas del postfix ...
viernes, 26 de diciembre de 2008
miércoles, 10 de diciembre de 2008
Amavis + postfix
Cuando se tiene un esquema de gateway de correo con postfix, en ocasiones es aconsejable que el nodo interno de correo no haga nuevamente un analisis con amavis.
1) El gateway analiza con spamassassin y clamav utilizando amavis-new
2) En nodo interno de correo en el archivo de configuracion main.cf
smtpd_recipient_restrictions
check_client_access cidr:/etc/postfix/filter.cidr
El contenido de filter.cidr es:
x.x.x.x OK # Ip del gateway de correo
x.x.x.x OK
0.0.0.0/0 FILTER smtp-amavis:[127.0.0.1]:10024
1) El gateway analiza con spamassassin y clamav utilizando amavis-new
2) En nodo interno de correo en el archivo de configuracion main.cf
smtpd_recipient_restrictions
check_client_access cidr:/etc/postfix/filter.cidr
El contenido de filter.cidr es:
x.x.x.x OK # Ip del gateway de correo
x.x.x.x OK
0.0.0.0/0 FILTER smtp-amavis:[127.0.0.1]:10024
jueves, 27 de noviembre de 2008
Script de Perl para renombrar archivos...
#/usr/bin/perl
@files=`ls -1 *.jpg`;
foreach $file ( @files ){
chomp($file);
$newfile=$file;
$newfile=~ s/name\_old/name\_new/;
if (-e $newfile) {
warn "No se puede renombrar $file a $newfile: $newfile ya existe\n";
}
elsif (rename $file, $newfile) {
}
else {
warn "Fallo $file a $newfile $!\n";
}
}
NOTA: Cortesia de Learning Perl.
@files=`ls -1 *.jpg`;
foreach $file ( @files ){
chomp($file);
$newfile=$file;
$newfile=~ s/name\_old/name\_new/;
if (-e $newfile) {
warn "No se puede renombrar $file a $newfile: $newfile ya existe\n";
}
elsif (rename $file, $newfile) {
}
else {
warn "Fallo $file a $newfile $!\n";
}
}
NOTA: Cortesia de Learning Perl.
miércoles, 12 de noviembre de 2008
vsftpd
1) apt-get install vsftpd
2) cp /etc/vsftpd.conf /etc/vsftpd.conf-dist
3) > /etc/vsftpd.conf
4) vi /etc/vsftpd.conf
# Example config file /etc/vsftpd.conf
#
#
##### GENERAL #####
# vsftpd will run in standalone mode
listen=YES
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
pasv_min_port=20000
pasv_max_port=21000
tcp_wrappers=YES
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=ftp
# You may fully customise the login banner string:
ftpd_banner=Welcome to OllinStudio FTP service.
# Time out an idle session.
idle_session_timeout=600
# Time out a data connection.
data_connection_timeout=120
# maximum number of clients which may be connected
max_clients=10
# maximum number of clients which may be connected from the
# same source internet address
max_per_ip=3
##### USER #####
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=no
# Uncomment this to allow local users to log in.
local_enable=YES
# Uncomment this to enable any form of FTP write command.
write_enable=YES
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
# messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
# You may restrict local users to their home directories.
chroot_local_user=YES
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
# all user and group information in directory listings
# will be displayed as “ftp”
hide_ids=YES
# If userlist_deny=NO, only allow users in the file /etc/vsftpd.user_list
userlist_deny=NO
##### LOG's #########
# Activate logging of uploads/downloads.
xferlog_enable=YES
# the log file
xferlog_file=/var/log/vsftpd.log
# If you want, you can have your log file in standard ftpd xferlog format
xferlog_std_format=YES
##### Debian customization #####
#
# Some of vsftpd's settings don't fit the Debian filesystem layout by
# default. These settings are more Debian-friendly.
#
# This option should be the name of a directory which is empty. Also, the
# directory should not be writable by the ftp user. This directory is used
# as a secure chroot() jail at times vsftpd does not require filesystem
# access.
secure_chroot_dir=/var/run/vsftpd
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
5) vi /etc/vsftpd.chroot_list
usuarios permitidos
6) vi /etc/vsftpd.ftpusers
usuarios locales no permitidos, normalmente root, admin, etc.
7) /etc/init.d/vsftpd start
NOTA:
Un error asi:
# /usr/sbin/vsftpd
500 OOPS: missing value in config file for:
Lo solucione verificando que en archivo de configuracion las lineas en blanco fueran eso lineas en blanco y no lineas con un espacio.
2) cp /etc/vsftpd.conf /etc/vsftpd.conf-dist
3) > /etc/vsftpd.conf
4) vi /etc/vsftpd.conf
# Example config file /etc/vsftpd.conf
#
#
##### GENERAL #####
# vsftpd will run in standalone mode
listen=YES
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
pasv_min_port=20000
pasv_max_port=21000
tcp_wrappers=YES
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=ftp
# You may fully customise the login banner string:
ftpd_banner=Welcome to OllinStudio FTP service.
# Time out an idle session.
idle_session_timeout=600
# Time out a data connection.
data_connection_timeout=120
# maximum number of clients which may be connected
max_clients=10
# maximum number of clients which may be connected from the
# same source internet address
max_per_ip=3
##### USER #####
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=no
# Uncomment this to allow local users to log in.
local_enable=YES
# Uncomment this to enable any form of FTP write command.
write_enable=YES
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
# messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
# You may restrict local users to their home directories.
chroot_local_user=YES
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
# all user and group information in directory listings
# will be displayed as “ftp”
hide_ids=YES
# If userlist_deny=NO, only allow users in the file /etc/vsftpd.user_list
userlist_deny=NO
##### LOG's #########
# Activate logging of uploads/downloads.
xferlog_enable=YES
# the log file
xferlog_file=/var/log/vsftpd.log
# If you want, you can have your log file in standard ftpd xferlog format
xferlog_std_format=YES
##### Debian customization #####
#
# Some of vsftpd's settings don't fit the Debian filesystem layout by
# default. These settings are more Debian-friendly.
#
# This option should be the name of a directory which is empty. Also, the
# directory should not be writable by the ftp user. This directory is used
# as a secure chroot() jail at times vsftpd does not require filesystem
# access.
secure_chroot_dir=/var/run/vsftpd
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
5) vi /etc/vsftpd.chroot_list
usuarios permitidos
6) vi /etc/vsftpd.ftpusers
usuarios locales no permitidos, normalmente root, admin, etc.
7) /etc/init.d/vsftpd start
NOTA:
Un error asi:
# /usr/sbin/vsftpd
500 OOPS: missing value in config file for:
Lo solucione verificando que en archivo de configuracion las lineas en blanco fueran eso lineas en blanco y no lineas con un espacio.
viernes, 7 de noviembre de 2008
Webcollab...
Webcollab es una herramienta para la administracion de proyectos.
Instalacion:
1. apt-get install mysql-server-5.0 php5-mysql apache2 libapache2-mod-php5 postfix
2. Bajar la version mas reciente
3. # cd /var/www/
# tar -zxvf webcollab-*.**.tar.gz
# ln -s webcollab-X.XX webcollab
# chmod 666 webcollab/config/config.php
4. En un webbrowser accesar a:
http://your_site/webcollab/setup.php
5. Siga las instrucciones
6. # chmod 444 webcollab/config/config.php
PD: Espero algun dia saber como integrarlo con ldap para asi no tener otra base para usuarios.
Instalacion:
1. apt-get install mysql-server-5.0 php5-mysql apache2 libapache2-mod-php5 postfix
2. Bajar la version mas reciente
3. # cd /var/www/
# tar -zxvf webcollab-*.**.tar.gz
# ln -s webcollab-X.XX webcollab
# chmod 666 webcollab/config/config.php
4. En un webbrowser accesar a:
http://your_site/webcollab/setup.php
5. Siga las instrucciones
6. # chmod 444 webcollab/config/config.php
PD: Espero algun dia saber como integrarlo con ldap para asi no tener otra base para usuarios.
miércoles, 5 de noviembre de 2008
Herramientas de monitoreo...
Casi siempre existe la duda de que software usar para monitoreo, quiza este link te pueda ayudar a determinar cual es mejor para tu caso en particular.
http://en.wikipedia.org/wiki/Comparison_of_network_monitoring_systems
Uso Nagios(monitoreo servidores) y Ganglia(nodos de una granja), por ser simples de configurar, mantener y la interfaz sencilla.
http://en.wikipedia.org/wiki/Comparison_of_network_monitoring_systems
Uso Nagios(monitoreo servidores) y Ganglia(nodos de una granja), por ser simples de configurar, mantener y la interfaz sencilla.
jueves, 16 de octubre de 2008
Request-Tracker 3.6 on Debian Etch
Request Tracker (RT) es un sistema de tickets que permite administrar de mejor manera tareas, solicitudes de servicio entre un grupo de usuarios. Sitio oficial
Estos son los pasos de manera general:
1) # apt-get install request-tracker3.6 rt3.6-apache2 mysql-server-5.0 rt3.6-db-mysql
2) # apt-get install postfix
3) vi /etc/request-tracker3.6/RT_SiteConfig.pm
Set($rtname, 'XXXXXX');
Set($Organization, 'XXXXX');
Set($CorrespondAddress , 'rt@XXXXX');
Set($CommentAddress , 'rt-comment@XXXXX');
Set($WebPath , "/rt");
Set($WebBaseURL , "http://mi_ip");
Set($LogoLinkURL, 'http://mi_sitio');
Set($LogoImageURL, $WebImagesURL . "LOGO_IMG.jpg");
my %typemap = (
mysql => 'mysql',
pgsql => 'Pg',
sqlite3 => 'SQLite',
);
Set($DatabaseType, $typemap{mysql} );
#Set($DatabaseHost, 'localhost');
#Set($DatabasePort, '');
Set($DatabaseUser , 'rtuser');
Set($DatabasePassword , 'mi_passwd_rt36');
Set($DatabaseName, 'rtdb_name');
4) vi /etc/apache2/sites-enabled/000-default
Include "/etc/request-tracker3.6/apache2-modperl2.conf"
RedirectMatch ^/$ /rt/
5) # cd /etc/apache2/mods-enabled/
# ln -s ../mods-available/rewrite.load .
# /etc/init.d/apache2 restart
6) http://mi_sitio/rt/
Login: root
Password: password
Estos son los pasos de manera general:
1) # apt-get install request-tracker3.6 rt3.6-apache2 mysql-server-5.0 rt3.6-db-mysql
2) # apt-get install postfix
3) vi /etc/request-tracker3.6/RT_SiteConfig.pm
Set($rtname, 'XXXXXX');
Set($Organization, 'XXXXX');
Set($CorrespondAddress , 'rt@XXXXX');
Set($CommentAddress , 'rt-comment@XXXXX');
Set($WebPath , "/rt");
Set($WebBaseURL , "http://mi_ip");
Set($LogoLinkURL, 'http://mi_sitio');
Set($LogoImageURL, $WebImagesURL . "LOGO_IMG.jpg");
my %typemap = (
mysql => 'mysql',
pgsql => 'Pg',
sqlite3 => 'SQLite',
);
Set($DatabaseType, $typemap{mysql} );
#Set($DatabaseHost, 'localhost');
#Set($DatabasePort, '');
Set($DatabaseUser , 'rtuser');
Set($DatabasePassword , 'mi_passwd_rt36');
Set($DatabaseName, 'rtdb_name');
4) vi /etc/apache2/sites-enabled/000-default
Include "/etc/request-tracker3.6/apache2-modperl2.conf"
RedirectMatch ^/$ /rt/
5) # cd /etc/apache2/mods-enabled/
# ln -s ../mods-available/rewrite.load .
# /etc/init.d/apache2 restart
6) http://mi_sitio/rt/
Login: root
Password: password
RT y ldap...
RT tiene la opcion de poder definirle metodo de autenticacion externa via OpenLdap
En lo personal se me hizo mas simple la instalacion manual que comentan en la liga.
Despues de la instalacion del modulo, es necesaria una configuracion en el archivo de configuracion /etc/request-tracker3.6/RT_SiteConfig.pm
Esta es la configuracion de mi sitio:
### MY_LDAP Settings
Set($AuthMethods, [ 'MY_LDAP' ]);
Set($ExternalAuthPriority,['MY_LDAP']);
Set($ExternalInfoPriority, [ 'MY_LDAP' ]);
Set($LdapAutoCreateNonLdapUsers, 1);
Set($AutoCreateNonExternalUsers, 1);
Set($ExternalSettings, {'MY_LDAP' =>{
'type' => 'ldap',
'auth' => 1,
'info' => 1,
'server' => '172.16.29.X',
'base' => 'ou=People,dc=XXX',
'filter' => '(objectclass=posixAccount)',
'd_filter' => '(objectClass=posixGroup)',
'tls' => 0,
'net_ldap_args' => [ version => 3 ],
'attr_match_list' => [ 'Name', 'EmailAddress', 'RealName', 'WorkPhone', 'Address2'],
'attr_map' => { 'Name' => 'uid',
'EmailAddress' => 'mail',
'RealName' => 'cn',
'Organization' => 'XXXXXXXXX XXXX',
'ExternalContactInfoId' => 'dn',
'Gecos' => 'cn',
'HomePhone' => ' ',
'WorkPhone' => ' ',
'MobilePhone' => ' ',
'PagerPhone' => 'pager',
'Address1' => ' ',
'Address2' => ' '
}
}
});
En lo personal se me hizo mas simple la instalacion manual que comentan en la liga.
Despues de la instalacion del modulo, es necesaria una configuracion en el archivo de configuracion /etc/request-tracker3.6/RT_SiteConfig.pm
Esta es la configuracion de mi sitio:
### MY_LDAP Settings
Set($AuthMethods, [ 'MY_LDAP' ]);
Set($ExternalAuthPriority,['MY_LDAP']);
Set($ExternalInfoPriority, [ 'MY_LDAP' ]);
Set($LdapAutoCreateNonLdapUsers, 1);
Set($AutoCreateNonExternalUsers, 1);
Set($ExternalSettings, {'MY_LDAP' =>{
'type' => 'ldap',
'auth' => 1,
'info' => 1,
'server' => '172.16.29.X',
'base' => 'ou=People,dc=XXX',
'filter' => '(objectclass=posixAccount)',
'd_filter' => '(objectClass=posixGroup)',
'tls' => 0,
'net_ldap_args' => [ version => 3 ],
'attr_match_list' => [ 'Name', 'EmailAddress', 'RealName', 'WorkPhone', 'Address2'],
'attr_map' => { 'Name' => 'uid',
'EmailAddress' => 'mail',
'RealName' => 'cn',
'Organization' => 'XXXXXXXXX XXXX',
'ExternalContactInfoId' => 'dn',
'Gecos' => 'cn',
'HomePhone' => ' ',
'WorkPhone' => ' ',
'MobilePhone' => ' ',
'PagerPhone' => 'pager',
'Address1' => ' ',
'Address2' => ' '
}
}
});
miércoles, 15 de octubre de 2008
Apache+LDAP en Debian...
Para configurar la authenticacion con ldap de un usuario para acceder a un sitio que provee un apache. Esta nota esta en el entendido de que tiene un servidor ldap funcionando y un servidor apache en Debian.
1) Habilitando modulos en configuracion de apache
cd /etc/apache2/mods-enabled/
ln -s ../mods-available/authnz_ldap.load .
ln -s ../mods-available/ldap.load .
2) Configurando la ruta
cd ../sites-enabled/
vi 000-default
Alias /Documentos/ "/var/www/Documentos/"
AuthType Basic
AuthName "Restricted Access"
AuthBasicProvider ldap
AuthLDAPURL "ldap://mi_server_ldap:389/ou=People,dc=midc?uid"
require valid-user
3) Reiniciar el sevicio de apache
/etc/init.d/apache2 restart
4) Comprobar accesando a http://misitio/Documentos
1) Habilitando modulos en configuracion de apache
cd /etc/apache2/mods-enabled/
ln -s ../mods-available/authnz_ldap.load .
ln -s ../mods-available/ldap.load .
2) Configurando la ruta
cd ../sites-enabled/
vi 000-default
Alias /Documentos/ "/var/www/Documentos/"
AuthType Basic
AuthName "Restricted Access"
AuthBasicProvider ldap
AuthLDAPURL "ldap://mi_server_ldap:389/ou=People,dc=midc?uid"
require valid-user
3) Reiniciar el sevicio de apache
/etc/init.d/apache2 restart
4) Comprobar accesando a http://misitio/Documentos
martes, 16 de septiembre de 2008
Tux images
lunes, 1 de septiembre de 2008
Migracion del historial de Mailgraph
Este procedimiento lo he probado para migrar entre diferentes arquitecturas base de datos de Mailgraph.
1) En el servidor actual de mailgraph
# cd /var/lib/mailgraph
# rrdtool dump mailgraph.rrd > mailgraph.xml
# rrdtool dump mailgraph_virus.rrd > mailgraph_virus.xml
2) Copiar a la ruta destino los archivos xml generados por los comandos anteriores.
3) En el equipo a donde se migrara la base rrd
# cd /var/lib/mailgraph
# rrdtool restore mailgraph.xml mailgraph.rrd
# rrdtool restore mailgraph_virus.xml mailgraph_virus.rrd
Nota:
* Siempre he migrado de un servidor Debian Linux a otro servidor Debian Linux.
* He probado este procedimiento entre sparc a intel y de intel a ppc
1) En el servidor actual de mailgraph
# cd /var/lib/mailgraph
# rrdtool dump mailgraph.rrd > mailgraph.xml
# rrdtool dump mailgraph_virus.rrd > mailgraph_virus.xml
2) Copiar a la ruta destino los archivos xml generados por los comandos anteriores.
3) En el equipo a donde se migrara la base rrd
# cd /var/lib/mailgraph
# rrdtool restore mailgraph.xml mailgraph.rrd
# rrdtool restore mailgraph_virus.xml mailgraph_virus.rrd
Nota:
* Siempre he migrado de un servidor Debian Linux a otro servidor Debian Linux.
* He probado este procedimiento entre sparc a intel y de intel a ppc
viernes, 15 de agosto de 2008
Bash tips.....
* Poner un timestamps en el historial de Bash
Si es solo para un usuario, definir la variable HISTTIMEFORMAT en el ~/.bash_profile. Si es para todos los usuarios usar el /etc/profile. Ejemplo:
HISTTIMEFORMAT='%F %T '
export HISTTIMEFORMAT
Si es solo para un usuario, definir la variable HISTTIMEFORMAT en el ~/.bash_profile. Si es para todos los usuarios usar el /etc/profile. Ejemplo:
HISTTIMEFORMAT='%F %T '
export HISTTIMEFORMAT
lunes, 11 de agosto de 2008
Recurso compartido win2 en linux
Listar recursos:
# smbclient -U user -I 192.168.16.229 -L //smbshare/
Montar un recurso
# mount -t smbfs -o username=winuser //smbserver/myshare /mnt/smbshare
# mount -t cifs -o username=winuser,password=winpwd //192.168.16.229/myshare /mnt/share
# smbclient -U user -I 192.168.16.229 -L //smbshare/
Montar un recurso
# mount -t smbfs -o username=winuser //smbserver/myshare /mnt/smbshare
# mount -t cifs -o username=winuser,password=winpwd //192.168.16.229/myshare /mnt/share
jueves, 17 de julio de 2008
Commands...
seq - print a sequence of numbers
local@debian:~$ for n in `seq 11 15`; do echo $n; done
11
12
13
14
15
split - split a file into pieces
local@debian:~$ ls -1 | split -5
watch - execute a program periodically, showing output fullscreen
local@debian:~$ watch -n 5 uptime
o
local@debian:~$ while sleep 5 ; do uptime ; done
pidof -- find the process ID of a running program.
local@debian:/bin$ pidof ssh
3875 3830 3822 3818 3815 3812 3809 3806
column - columnate lists
local@debian:/tmp$ ls | column -c 1
gconfd-local
keyring-TdbxsI
LDAP1.0_RT3.tar.gz
LDAP_RT3
stat - display file or file system status
local@debian:/tmp$ ls -l x
-rw-r--r-- 1 local local 135273 2008-08-11 16:41 x
local@debian:/tmp$ stat -c %a x
644
chattr - change file attributes on a Linux second extended file system
debian:/home2/local# chattr +i dir_inmutable
inmutable = root can't delete the file
lsattr - list file attributes on a Linux second extended file system
debian:/home2/local# lsattr -d dir_inmutable/
----i------------- dir_inmutable/
fdupes - finds duplicate files in a given set of directories
local@debian:~$ cp marcela_alegria.tex x.txt
local@debian:~$ fdupes .
./marcela_alegria.tex
./x.txt
Source: http://www.debian-administration.org/articles/605
[root@benito2 DPX]# netstat -tunlp
local@debian:~$ for n in `seq 11 15`; do echo $n; done
11
12
13
14
15
split - split a file into pieces
local@debian:~$ ls -1 | split -5
watch - execute a program periodically, showing output fullscreen
local@debian:~$ watch -n 5 uptime
o
local@debian:~$ while sleep 5 ; do uptime ; done
pidof -- find the process ID of a running program.
local@debian:/bin$ pidof ssh
3875 3830 3822 3818 3815 3812 3809 3806
column - columnate lists
local@debian:/tmp$ ls | column -c 1
gconfd-local
keyring-TdbxsI
LDAP1.0_RT3.tar.gz
LDAP_RT3
stat - display file or file system status
local@debian:/tmp$ ls -l x
-rw-r--r-- 1 local local 135273 2008-08-11 16:41 x
local@debian:/tmp$ stat -c %a x
644
chattr - change file attributes on a Linux second extended file system
debian:/home2/local# chattr +i dir_inmutable
inmutable = root can't delete the file
lsattr - list file attributes on a Linux second extended file system
debian:/home2/local# lsattr -d dir_inmutable/
----i------------- dir_inmutable/
fdupes - finds duplicate files in a given set of directories
local@debian:~$ cp marcela_alegria.tex x.txt
local@debian:~$ fdupes .
./marcela_alegria.tex
./x.txt
Source: http://www.debian-administration.org/articles/605
[root@benito2 DPX]# netstat -tunlp
miércoles, 16 de julio de 2008
Debian en Mac G5
Para no variar queria experimentar Debian en una Mac G5. He aqui mi historia.
Instalacion:
Use un CDROM, pero debo confesar que no conozco mucho del mundo Mac asi que tuve que investigar como bootear desde la unidad de CD ( ya aprendi es encender el equipo y presionar la tecla Option-alt ).
Despues de haber logrado bootear desde cdrom, pense que seria en el prompt de boot, el clasico install, pero resulto que si lo hacia me aparecia este error:
opening display /pci@0, f0000000/NVDA,parent@10/NVDA,Display-A@0... ok
copying 0F device tree...done
Initializing fake screen: NVDA,Display-B
Calling quiesce ...
returning 0x01400000 from prom_init
Invalid memory access at %SRR0: 00000000.01403b88 %SRR1: 10000000.00083030
Apple Powermac 7,2 5.1.5f2 BootROM built on 09/21/04 at 11:58:53
Copyright 1994-2004 Apple Computer, Inc.
All Rights Reserved
Welcome to Open Firmware, the system time and date is 22:46:07 10/27/2004
To continue booting, type 'mac-boot' and press return
To shut down, type 'shut-down' and press return
Release keys to continue!
Leyendo un poco en la red encontre que se soluciona usando en el boot: expert64 video=ofonly
Despues otra que sucedio es que particione segun considere necesario, pero mas adelante en la instalacion me aparecio un error que decia:
No NewWorld boot partition was found. The yaboot boot loader requires an Apple_Bootstrap partition at least 819200 bytes in size, using the HFS Macintosh ...
Por lo que entendi, es que debia tener una particion para poner el boot loader. Creandola es suficiente.
Operacion:
Tan bella como siempre en un Debian ;)
Instalacion:
Use un CDROM, pero debo confesar que no conozco mucho del mundo Mac asi que tuve que investigar como bootear desde la unidad de CD ( ya aprendi es encender el equipo y presionar la tecla Option-alt ).
Despues de haber logrado bootear desde cdrom, pense que seria en el prompt de boot, el clasico install, pero resulto que si lo hacia me aparecia este error:
opening display /pci@0, f0000000/NVDA,parent@10/NVDA,Display-A@0... ok
copying 0F device tree...done
Initializing fake screen: NVDA,Display-B
Calling quiesce ...
returning 0x01400000 from prom_init
Invalid memory access at %SRR0: 00000000.01403b88 %SRR1: 10000000.00083030
Apple Powermac 7,2 5.1.5f2 BootROM built on 09/21/04 at 11:58:53
Copyright 1994-2004 Apple Computer, Inc.
All Rights Reserved
Welcome to Open Firmware, the system time and date is 22:46:07 10/27/2004
To continue booting, type 'mac-boot' and press return
To shut down, type 'shut-down' and press return
Release keys to continue!
Leyendo un poco en la red encontre que se soluciona usando en el boot: expert64 video=ofonly
Despues otra que sucedio es que particione segun considere necesario, pero mas adelante en la instalacion me aparecio un error que decia:
No NewWorld boot partition was found. The yaboot boot loader requires an Apple_Bootstrap partition at least 819200 bytes in size, using the HFS Macintosh ...
Por lo que entendi, es que debia tener una particion para poner el boot loader. Creandola es suficiente.
Operacion:
Tan bella como siempre en un Debian ;)
viernes, 20 de junio de 2008
kde KCrash: Application 'kbuildsycoca' crashing...
KDE no termina de iniciar sesion y en .xsession-errors aparece.
startkde: Starting up...
kbuildsycoca running...
KCrash: Application 'kbuildsycoca' crashing...
Lo solucione iniciando session en gnome y en una terminal ejecutar kbuildsycoca. Salir e iniciar KDE.
startkde: Starting up...
kbuildsycoca running...
KCrash: Application 'kbuildsycoca' crashing...
Lo solucione iniciando session en gnome y en una terminal ejecutar kbuildsycoca. Salir e iniciar KDE.
jueves, 5 de junio de 2008
Ldap commands...
Para iniciar/detener servicio:
/etc/init.d/sladp start | stop
Para crear un index:
slapindex -v -f /etc/ldap/slapd.conf
Para backup de la base:
/etc/init.d/slapd stop (Debe estar detenido el servicio)
slapcat -v -f /etc/ldap/slapd.conf -l /home/local/backup-ldap.ldif
Para recuperar la base desde un respaldo:
/etc/init.d/slapd stop
rm -rf /var/lib/ldap/*
slapadd -v -c -l /home/admin/backup-ldap.ldif -f /etc/ldap/slapd.conf
/etc/init.d/slapd start
Para agregar un registro:
ldapadd -x -D 'cn=admin,dc=example,dc=exampledomain' -w password -f rvillar.ldif
Para eliminar un registro:
ldapdelete -x -h 127.0.0.1 -D 'cn=admin,dc=example,dc=exampledomain' -w password "cn=userdel,ou=People,dc=example,dc=exampledomain"
Para busquedas:
ldapserach -x
ldapsearch -x -b 'dc=example,dc=exampledomain' cn='Marcela Alegria' uid ou
ldapsearch -x -b 'dc=example,dc=exampledomain' "(&(ou=Math)(cn=*Pig*))"
Para crear una cadena para password cifrada:
slappasswd -u -s
/etc/init.d/sladp start | stop
Para crear un index:
slapindex -v -f /etc/ldap/slapd.conf
Para backup de la base:
/etc/init.d/slapd stop (Debe estar detenido el servicio)
slapcat -v -f /etc/ldap/slapd.conf -l /home/local/backup-ldap.ldif
Para recuperar la base desde un respaldo:
/etc/init.d/slapd stop
rm -rf /var/lib/ldap/*
slapadd -v -c -l /home/admin/backup-ldap.ldif -f /etc/ldap/slapd.conf
/etc/init.d/slapd start
Para agregar un registro:
ldapadd -x -D 'cn=admin,dc=example,dc=exampledomain' -w password -f rvillar.ldif
Para eliminar un registro:
ldapdelete -x -h 127.0.0.1 -D 'cn=admin,dc=example,dc=exampledomain' -w password "cn=userdel,ou=People,dc=example,dc=exampledomain"
Para busquedas:
ldapserach -x
ldapsearch -x -b 'dc=example,dc=exampledomain' cn='Marcela Alegria' uid ou
ldapsearch -x -b 'dc=example,dc=exampledomain' "(&(ou=Math)(cn=*Pig*))"
Para crear una cadena para password cifrada:
slappasswd -u -s
Migracion del servicio Openldap a un nuevo servidor Debian...
Estos fueron los pasos que hice para migrar la informacion de un servidor ldap existente a un nuevo servidor de ldap (Debian).
* Hacer respaldo de la base ldap en el servidor actual
1) /etc/init.d/slapd stop
2) slapcat -v -f /etc/ldap/slapd.conf -l /home/local/backup-ldap.ldif
* En el nuevo servidor:
1) Instalacion de openldap
apt-get install slapd ldap-utils
2) En mi caso el apt-get no me pregunto nada y trato de configurarlo con informacion local, pero fue necesario cambiarlo a la definicion del servidor anterior.
# /etc/init.d/slapd stop
# vi /etc/ldap/ldap.conf
BASE dc=misubdom,dc=midom
URI ldap://127.0.0.1
# vi /etc/ldap/slapd.conf
suffix "dc=misubdom,dc=midom"
rootdn "cn=admin,dc=misubdom,dc=midom"
3) Probando la configuracion
# slaptest -f /etc/ldap/slapd.conf -d2
4) Iniciando el servicio
#/etc/init.d/slapd start
7) Comprobando que funciona
# ldapsearch -x
8) Ahora si, la migracion de la informacion propiamente dicho:
# /etc/init.d/slapd stop
# slapadd -v -c -l /home/admin/backup-ldap.ldif -f /etc/ldap/slapd.conf
9) Iniciando el servicio
#/etc/init.d/slapd start
10 ) Comprobando que funciona
# ldapsearch -x
* Hacer respaldo de la base ldap en el servidor actual
1) /etc/init.d/slapd stop
2) slapcat -v -f /etc/ldap/slapd.conf -l /home/local/backup-ldap.ldif
* En el nuevo servidor:
1) Instalacion de openldap
apt-get install slapd ldap-utils
2) En mi caso el apt-get no me pregunto nada y trato de configurarlo con informacion local, pero fue necesario cambiarlo a la definicion del servidor anterior.
# /etc/init.d/slapd stop
# vi /etc/ldap/ldap.conf
BASE dc=misubdom,dc=midom
URI ldap://127.0.0.1
# vi /etc/ldap/slapd.conf
suffix "dc=misubdom,dc=midom"
rootdn "cn=admin,dc=misubdom,dc=midom"
3) Probando la configuracion
# slaptest -f /etc/ldap/slapd.conf -d2
4) Iniciando el servicio
#/etc/init.d/slapd start
7) Comprobando que funciona
# ldapsearch -x
8) Ahora si, la migracion de la informacion propiamente dicho:
# /etc/init.d/slapd stop
# slapadd -v -c -l /home/admin/backup-ldap.ldif -f /etc/ldap/slapd.conf
9) Iniciando el servicio
#/etc/init.d/slapd start
10 ) Comprobando que funciona
# ldapsearch -x
miércoles, 4 de junio de 2008
Mi historia con Debian y Blu-Ray
Algo que me disgustaba mucho es tener que usar windows para leer el contenido de un disco de datos bluray, asi que me puse a investigar como poder leerlo desde mi Debian. Esta es la historia:
1) Verificar que tenia el modulo para udf:
$ lsmod | grep udf
2) Identificar el dispositivo al que hace referencia:
$ udevinfo -q env -n /dev/sr1
ID_CDROM=1
ID_CDROM_CD_R=1
ID_CDROM_CD_RW=1
ID_CDROM_DVD=1
ID_CDROM_DVD_R=1
ID_CDROM_DVD_RAM=1
ID_CDROM_MRW=1
ID_CDROM_MRW_W=1
ID_CDROM_RAM=1
ID_VENDOR=HL-DT-ST
ID_MODEL=BD-RE_GGW-H20L
ID_REVISION=YL01
ID_SERIAL=HL-DT-ST_BD-RE_GGW-H20L_635222222222-0:0
ID_SERIAL_SHORT=635222222222
ID_TYPE=cd
ID_INSTANCE=0:0
ID_BUS=usb
ID_PATH=pci-0000:00:1d.7-usb-0:8:1.0-scsi-0:0:0:0
GENERATED=1
Hasta ahi, parecia todo OK, hasta que se me ocurrio ejecutar el comando mount.
# mount -t udf -o ro /dev/sr1 /media/bluray/
mount: wrong fs type, bad option, bad superblock on /dev/scd1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
Y claro a checar que mensaje mandaba dmesg:
UDF-fs: minUDFReadRev=250 (max is 201)
Ya con ese mensaje busque en la red la solucion y vi que se debe parchar el kernel para que soporte blu ray en version 2.50. Facil, no?... Claro, si se hace al modo Debian.
1) Bajar UDF 2.50 patch for linux 2.6.24
2) Instalar paquetes necesarios:
apt-get install libncurses5-dev linux-source-2.6.24 kernel-package
3) cd /usr/src
4) rm -rf linux
5) tar xjvf linux-source-2.6.24.tar.bz2
6) ln -s linux-source-2.6.24 linux
7) cd linux
8) cp /boot/config-2.6.24-1-686 .config
9) bzcat | patch -p1
10) make menuconfig
11) make-kpkg buildpackage -rev Custom.1 kernel_image
12) dpkg -i linux-image-2.6.24_Custom.1_i386.deb
13) shutdown -r now
14) mount -t iso9660 -o ro /dev/sr1 /media/bluray
15) ls -l /media/bluray
Nota: Encontre en la red dos cosas interesantes, pero creo que hasta cierto punto opuestas:
1) Nero tiene su version para Linux que permite quemar discos bluray
2) los bluray en Linux son por el momento de "solo lectura" :(
1) Verificar que tenia el modulo para udf:
$ lsmod | grep udf
2) Identificar el dispositivo al que hace referencia:
$ udevinfo -q env -n /dev/sr1
ID_CDROM=1
ID_CDROM_CD_R=1
ID_CDROM_CD_RW=1
ID_CDROM_DVD=1
ID_CDROM_DVD_R=1
ID_CDROM_DVD_RAM=1
ID_CDROM_MRW=1
ID_CDROM_MRW_W=1
ID_CDROM_RAM=1
ID_VENDOR=HL-DT-ST
ID_MODEL=BD-RE_GGW-H20L
ID_REVISION=YL01
ID_SERIAL=HL-DT-ST_BD-RE_GGW-H20L_635222222222-0:0
ID_SERIAL_SHORT=635222222222
ID_TYPE=cd
ID_INSTANCE=0:0
ID_BUS=usb
ID_PATH=pci-0000:00:1d.7-usb-0:8:1.0-scsi-0:0:0:0
GENERATED=1
Hasta ahi, parecia todo OK, hasta que se me ocurrio ejecutar el comando mount.
# mount -t udf -o ro /dev/sr1 /media/bluray/
mount: wrong fs type, bad option, bad superblock on /dev/scd1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
Y claro a checar que mensaje mandaba dmesg:
UDF-fs: minUDFReadRev=250 (max is 201)
Ya con ese mensaje busque en la red la solucion y vi que se debe parchar el kernel para que soporte blu ray en version 2.50. Facil, no?... Claro, si se hace al modo Debian.
1) Bajar UDF 2.50 patch for linux 2.6.24
2) Instalar paquetes necesarios:
apt-get install libncurses5-dev linux-source-2.6.24 kernel-package
3) cd /usr/src
4) rm -rf linux
5) tar xjvf linux-source-2.6.24.tar.bz2
6) ln -s linux-source-2.6.24 linux
7) cd linux
8) cp /boot/config-2.6.24-1-686 .config
9) bzcat | patch -p1
10) make menuconfig
11) make-kpkg buildpackage -rev Custom.1 kernel_image
12) dpkg -i linux-image-2.6.24_Custom.1_i386.deb
13) shutdown -r now
14) mount -t iso9660 -o ro /dev/sr1 /media/bluray
15) ls -l /media/bluray
Nota: Encontre en la red dos cosas interesantes, pero creo que hasta cierto punto opuestas:
1) Nero tiene su version para Linux que permite quemar discos bluray
2) los bluray en Linux son por el momento de "solo lectura" :(
sábado, 3 de mayo de 2008
Debian como cliente de autenticacion de Openldap..
1) # apt-get install libpam-ldap libnss-ldap
2) Modificar archivos de pam para definir que sea valido autenticacion via ldap.
En /etc/pam.d/common-account
account sufficient pam_ldap.so
account required pam_unix.so
En /etc/pam.d/common-auth
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure
En /etc/pam.d/common-password
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5
En /etc/pam.d/common-session
session sufficient pam_ldap.so
session required pam_unix.so
En /etc/nsswitch.conf:
:%s/compat/ldap files/g
SOLUCION DE PROBLEMAS:
1) Cuando se trata de un usuario local, pide en 2 ocasiones el password. Eso se soluciona poniendo una opcion mas en los archivos /etc/pam.d/common-*
use_first_pass
ejemplo:
/etc/pam.d/common-auth
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass
2) Al reiniciar el equipo, manda durante el boot el mensaje:
udevd[374]: nss_ldap: could not connect to any LDAP server as (null) - Can't contact LDAP server
udevd[374]: nss_ldap: failed to bind to LDAP server ldap://ip.ldap: Can't contact LDAP server
Eso pasa por que se trata de conectar al servidor ldap antes de levantar la interfaz de red. Lo solucione asi:
# rm -rf /etc/rcS.d/S40networking
# ln -s /etc/init.d/networking /etc/rcS.d/S09networking
2) Modificar archivos de pam para definir que sea valido autenticacion via ldap.
En /etc/pam.d/common-account
account sufficient pam_ldap.so
account required pam_unix.so
En /etc/pam.d/common-auth
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure
En /etc/pam.d/common-password
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5
En /etc/pam.d/common-session
session sufficient pam_ldap.so
session required pam_unix.so
En /etc/nsswitch.conf:
:%s/compat/ldap files/g
SOLUCION DE PROBLEMAS:
1) Cuando se trata de un usuario local, pide en 2 ocasiones el password. Eso se soluciona poniendo una opcion mas en los archivos /etc/pam.d/common-*
use_first_pass
ejemplo:
/etc/pam.d/common-auth
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass
2) Al reiniciar el equipo, manda durante el boot el mensaje:
udevd[374]: nss_ldap: could not connect to any LDAP server as (null) - Can't contact LDAP server
udevd[374]: nss_ldap: failed to bind to LDAP server ldap://ip.ldap: Can't contact LDAP server
Eso pasa por que se trata de conectar al servidor ldap antes de levantar la interfaz de red. Lo solucione asi:
# rm -rf /etc/rcS.d/S40networking
# ln -s /etc/init.d/networking /etc/rcS.d/S09networking
jueves, 1 de mayo de 2008
RPM - DEB
Comando utiles e interesantes
RPM:
rpm -qa --last ---> listar en orden de mas reciente a mas antiguo todos los paquetes instalados.
rpm2cpio | cpio -icduv ---> extraer el contenido del rpm en el directorio actual.
rpm -qpl archivo.rpm ---> lista el contenido de un archivo rpm no instalado.
rpm -ql paquete ---> lista el contenido de un rpm instalado.
rpm -qf archivo ---> Da el nombre del paquete que provee dicho archivo
DEB:
apt-show-versions ---> herramienta para listar paquetes y su estado respecto al repositorio. Para saber la version de determinado paquete usa -r paquete o bien usa -u para saber si esta actualizado o hay alguna actualizacion pendiente.
sort -r /var/log/dpkg.log | awk '{ if ($3=="install" ) print $4 " " $6 "\t" $1 " " $2 }' ---> como root puede listar de manera similar a rpm -aq --last
dpkg -X ---> extraer el contenido de un deb.
dpkg -c paquete_NO_instalado ---> Lista de archivos que provee el paquete deb NO instaldo.
dpkg -L paquete_instalado ---> Lista de archivos que provee el paquete deb.
dpkg -S archivo ---> Lista el nombre de paquete que provee dicho archivo
ALIEN:
alien -d paquete.rpm
RPM:
rpm -qa --last ---> listar en orden de mas reciente a mas antiguo todos los paquetes instalados.
rpm2cpio
rpm -qpl archivo.rpm ---> lista el contenido de un archivo rpm no instalado.
rpm -ql paquete ---> lista el contenido de un rpm instalado.
rpm -qf archivo ---> Da el nombre del paquete que provee dicho archivo
DEB:
apt-show-versions ---> herramienta para listar paquetes y su estado respecto al repositorio. Para saber la version de determinado paquete usa -r paquete o bien usa -u para saber si esta actualizado o hay alguna actualizacion pendiente.
sort -r /var/log/dpkg.log | awk '{ if ($3=="install" ) print $4 " " $6 "\t" $1 " " $2 }' ---> como root puede listar de manera similar a rpm -aq --last
dpkg -X
dpkg -c paquete_NO_instalado ---> Lista de archivos que provee el paquete deb NO instaldo.
dpkg -L paquete_instalado ---> Lista de archivos que provee el paquete deb.
dpkg -S archivo ---> Lista el nombre de paquete que provee dicho archivo
ALIEN:
alien -d paquete.rpm
martes, 29 de abril de 2008
martes, 22 de abril de 2008
Mailgraph
Es una herramienta para monitorea un servidor de correo. En ocasiones es necesario migrar dicho servicio entre servidores, sin perder el historico actual, para eso:
1) Instala mailgraph
apt-get install rrdtool mailgraph
2) Configura mailgraph
less /etc/default/mailgraph
3) Define los valores correctos para $rrd, $rrd_virus, $tmp_dir en /usr/lib/cgi-bin/mailgraph.cgi
4) Exporta/importa los archivos rrd:
= Si estas migrando entre iguales arquitecturas con que pongas los archivos mailgraph.rrd y mailgraph_virus.rrd en la ruta correcta.
= Si la migracion es entre diferentes arquitecturas usa:
1. Exportar la base
# rrdtool dump archivo(s).rrd > respaldo.xml
2.Importar la base
# rrdtool restore respaldo.xml
Nota: Este procedimiento esta muy enfocado a que el servidor a donde se migrara la base de mailgraph sea un Debian, sin embargo en terminos generales solo variara el metodo de instalacion.
1) Instala mailgraph
apt-get install rrdtool mailgraph
2) Configura mailgraph
less /etc/default/mailgraph
3) Define los valores correctos para $rrd, $rrd_virus, $tmp_dir en /usr/lib/cgi-bin/mailgraph.cgi
4) Exporta/importa los archivos rrd:
= Si estas migrando entre iguales arquitecturas con que pongas los archivos mailgraph.rrd y mailgraph_virus.rrd en la ruta correcta.
= Si la migracion es entre diferentes arquitecturas usa:
1. Exportar la base
# rrdtool dump archivo(s).rrd > respaldo.xml
2.Importar la base
# rrdtool restore respaldo.xml
Nota: Este procedimiento esta muy enfocado a que el servidor a donde se migrara la base de mailgraph sea un Debian, sin embargo en terminos generales solo variara el metodo de instalacion.
Script de perl para pruebas del servidor de correo....
Script para pruebas de recepcion de correo, normalmente lo uso para pruebas de stress
=====================================================================================
#!/usr/bin/perl
use MIME::Lite;
$to = $ARGV[0];
$msg = new MIME::Lite
From =>'midir@dominioorigen',
To =>$to,
Subject =>'Mail para prueba de stress',
Type =>'multipart/mixed';
attach $msg
Type =>'TEXT',
Data =>"
Aqui cualquier mensaje
";
$msg->send;
Script para probar que esta detectando correctamente correo spam
================================================================
#!/usr/bin/perl
use MIME::Lite;
$to = $ARGV[0];
$msg = new MIME::Lite
From =>'direccion@dominioorigen',
To =>$to,
Subject =>'Prueba para spam',
Type =>'multipart/mixed';
attach $msg
Type =>'TEXT',
Data =>"
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
";
$msg->send;
Script para probar que esta detectando correctamente correo con un adjunto con virus (clamav)
=============================================================================================
!/usr/bin/perl
use MIME::Lite;
$to = $ARGV[0];
### Adjust subject and body message
my $subject = 'A message with 2 parts ...';
my $message_body = "Here's the attachment file(s) you wanted";
### Adjust the filenames
my $my_file = '/home/marce/clam.cab';
### Create the multipart container
$msg = MIME::Lite->new (
From => 'midir@dominoorigen',
To => $to,
Subject => $subject,
Type =>'multipart/mixed'
) or die "Error creating multipart container: $!\n";
### Add the text message part
$msg->attach (
Type => 'TEXT',
Data => $message_body
) or die "Error adding the text message part: $!\n";
### Add the file
$msg->attach (
Type => 'image/gif',
Path => $my_file,
# Filename => $your_file_gif,
Disposition => 'attachment'
) or die "Error adding $file_gif: $!\n";
### Send the Message
MIME::Lite->send('smtp', $mail_host, Timeout=>60);
$msg->send;
NOTA:
En todos estos script se envia por argumento la direccion a quien sera enviado el mail.
=====================================================================================
#!/usr/bin/perl
use MIME::Lite;
$to = $ARGV[0];
$msg = new MIME::Lite
From =>'midir@dominioorigen',
To =>$to,
Subject =>'Mail para prueba de stress',
Type =>'multipart/mixed';
attach $msg
Type =>'TEXT',
Data =>"
Aqui cualquier mensaje
";
$msg->send;
Script para probar que esta detectando correctamente correo spam
================================================================
#!/usr/bin/perl
use MIME::Lite;
$to = $ARGV[0];
$msg = new MIME::Lite
From =>'direccion@dominioorigen',
To =>$to,
Subject =>'Prueba para spam',
Type =>'multipart/mixed';
attach $msg
Type =>'TEXT',
Data =>"
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
";
$msg->send;
Script para probar que esta detectando correctamente correo con un adjunto con virus (clamav)
=============================================================================================
!/usr/bin/perl
use MIME::Lite;
$to = $ARGV[0];
### Adjust subject and body message
my $subject = 'A message with 2 parts ...';
my $message_body = "Here's the attachment file(s) you wanted";
### Adjust the filenames
my $my_file = '/home/marce/clam.cab';
### Create the multipart container
$msg = MIME::Lite->new (
From => 'midir@dominoorigen',
To => $to,
Subject => $subject,
Type =>'multipart/mixed'
) or die "Error creating multipart container: $!\n";
### Add the text message part
$msg->attach (
Type => 'TEXT',
Data => $message_body
) or die "Error adding the text message part: $!\n";
### Add the file
$msg->attach (
Type => 'image/gif',
Path => $my_file,
# Filename => $your_file_gif,
Disposition => 'attachment'
) or die "Error adding $file_gif: $!\n";
### Send the Message
MIME::Lite->send('smtp', $mail_host, Timeout=>60);
$msg->send;
NOTA:
En todos estos script se envia por argumento la direccion a quien sera enviado el mail.
jueves, 17 de abril de 2008
Saber informacion de la configuracion de un sistema
AIX:
prtconf
lscfg
IRIX:
hinv - hardware -
chkconfig - software -
MAC OS:
system_profiler
SOLARIS:
prtconf
sysdef
LINUX:
/usr/sbin/lshw
por comandos separados:
uname - Version SO, arquitectura, nombre del host
free - memoria
/proc/cpuinfo - procesador
prtconf
lscfg
IRIX:
hinv - hardware -
chkconfig - software -
MAC OS:
system_profiler
SOLARIS:
prtconf
sysdef
LINUX:
/usr/sbin/lshw
por comandos separados:
uname - Version SO, arquitectura, nombre del host
free - memoria
/proc/cpuinfo - procesador
martes, 4 de marzo de 2008
Sony Vaio VGN-CR160F con Debian lenny/sid
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
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
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
Suscribirse a:
Entradas (Atom)