miércoles, 28 de enero de 2009

c# y excel

Me vais a disculpar la salida de tono en el blog, pero recientemente he tenido que ayudar a una persona a resolver la manera de procesar información de un fichero Excel desde una aplicación C#. Lo pongo aquí porque seguro que a alguién le sirve.
Con poco esfuerzo lo hacemos en Visual Basic también pero aquí os lo dejo tal cual en C#.

El ejemplo abre un hoja de cálculo Excel llamado "ficheroinput.xls" como una base de datos y exporta las filas deseadas a un fichero html llamado "output.html".


string strcon;

//Con la siguiente funciona, pero la otra más simplificada tambien sirve

strcon = "Dsn=Excel Files;Provider=Microsoft.Jet.OLEDB.4.0;DBQ=ficheroinput.xls;Extended Properties=\"Excel 12.0;Readonly=False;IMEX=0\"";
strcon = "Dsn=Excel Files;Provider=Microsoft.Jet.OLEDB.4.0;DBQ=ficheroinput.xls;";

//Abrimos la conexion
System.Data.Odbc.OdbcConnection conn;
conn = new System.Data.Odbc.OdbcConnection(strcon);
conn.Open();

//Nos vamos a interesar solamente los datos de las 2 primeras columnas y 3 filas de la hoja "Hoja1"
//Creamos la consulta y la mostramos por pantalla.
//Se considera a la primera fila no vacía como la cabecera de las columna de datos
//por lo que hay que poner nombres a las columnas
System.Data.Odbc.OdbcCommand misel;
misel = conn.CreateCommand();
misel.CommandText = " Select * from [h$A1:B4];";
System.Data.Odbc.OdbcDataReader r = misel.ExecuteReader();

//Guardamos los datos en el fichero en formato htm
System.IO.StreamWriter writer = new System.IO.StreamWriter("output.html", false);
string lineaweb;
writer.WriteLine("<"+"html><"+"body><"+"table>");
try {
while (r.Read()) {
lineaweb = "<"+"tr>";
for (int i = 0; i < 7; i++) {
lineaweb = lineaweb + "<"+"td>" + notnull(r, i) + "";
}
writer.WriteLine(lineaweb+"");
}
writer.WriteLine("");
}
catch {
Console.WriteLine("error leyendo del fichero");
}
r.Close();
writer.Close();
misel.Dispose();
conn.Close();




La función notnull de fabricación casera es la siguiente:


string notnull(System.Data.Odbc.OdbcDataReader result,int columna) {
string res;
try {
res = result.GetString(columna);
}
catch {
res = "";
}
return res;
}

martes, 20 de enero de 2009

AIX: error en alt_disk_install

Algunos errores son como la sangre en una herida: son mas escandalosos que graves.
Por ejemplo tenemos este haciendo un rootvg alternativo:


[...]
Creating /alt_inst/var file system.
Generating a list of files
for backup and restore into the alternate file system...
sort: 0653-657 Se ha producido un error de grabación al clasificar.
Backing-up the rootvg files and restoring them to the alternate file system...
/usr/bin/lslpp: No such file or directory
Modifying ODM on cloned disk.
0518-402 odmadd: No se puede abrir la clase: CuAt, línea de stanza: 2 /tmp/.fake_cuat
Compruebe el nombre de vía de acceso y los permisos.
0518-402 odmadd: No se puede abrir la clase: CuDv, línea de stanza: 2 /tmp/.fake_cudv
Compruebe el nombre de vía de acceso y los permisos.
0518-402 odmadd: No se puede abrir la clase: CuDvDr, línea de stanza: 2 /tmp/.fake_cudvdr
Compruebe el nombre de vía de acceso y los permisos.
Un archivo o directorio en la vía de acceso no existe.
/usr/sbin/alt_disk_install[66]: /alt_inst/etc/filesystems.save: 0403-005 No se puede crear el archivo especificado.
cp: /alt_inst/etc/filesystems.save: Un archivo o directorio en la vía de acceso no existe.
Building boot image on cloned disk.
mv: 0653-401 No se puede renombrar /alt_inst/dev/hd5 a /alt_inst/dev/orig.hd5:
Un archivo o directorio en la vía de acceso no existe.
mknod: /alt_inst/dev/hd5: Un archivo o directorio en la vía de acceso no existe.
mv: 0653-401 No se puede renombrar /alt_inst/dev/hdisk0 a /alt_inst/dev/orig.hdisk0:
Un archivo o directorio en la vía de acceso no existe.
mv: 0653-401 No se puede renombrar /alt_inst/dev/rhdisk0 a /alt_inst/dev/orig.rhdisk0:
Un archivo o directorio en la vía de acceso no existe.
mknod: /alt_inst/dev/hdisk0: Un archivo o directorio en la vía de acceso no existe.
mknod: /alt_inst/dev/rhdisk0: Un archivo o directorio en la vía de acceso no existe.
0518-506 odmget: No se puede abrir la clase de objeto CuAt
Compruebe el nombre de vía de acceso y los permisos.
0518-506 odmget: No se puede abrir la clase de objeto CuAt
Compruebe el nombre de vía de acceso y los permisos.
0518-506 odmget: No se puede abrir la clase de objeto CuAt
Compruebe el nombre de vía de acceso y los permisos.
/usr/sbin/bosboot: No such file or directory
/usr/sbin/bosboot: No such file or directory
0505-120 alt_disk_install: Error running bosboot in the cloned
root volume group.
Cleaning up.
desmontaje forzado de /alt_inst/var
[...]

Diría uno que está corrupta la ODM o incluso que viene el apocalipsis.
Yo solo tuve que ampliar el /var para que la larguísima lista de ficheros contenidos a la sazón en el rootvg cupiera para hacer el posterior sort, etc...

AIX/Linux: lsof

El otro día hablé sobre tcpdump e introduje un poquito como usarlo para capturar tráfico. Ahora quiero ponerme en la situación del administrador que quiere saber qué proceso está generando el tráfico.

Para ello empleo "lsof" que viene para todo estos sistemas operativos en la revisión 4.78:

AIX 5.[123]
Apple Darwin 7.x and 8.x for Power Macintosh systems
FreeBSD 4.x, 4.1x, 5.x and [67].x for x86-based systems
FreeBSD 5.x and [67].x for Alpha, AMD64 and Sparc64-based systems
HP-UX 11.00, 11.11 and 11.23
Linux 2.1.72 and above for x86-based systems
NetBSD 1.[456], 2.x and 3.x for Alpha, x86, and SPARC-based systems
NEXTSTEP 3.[13] for NEXTSTEP architectures
OpenBSD 2.[89] and 3.[0-9] for x86-based systems
OPENSTEP 4.x
SCO OpenServer Release 5.0.6 for x86-based systems
SCO|Caldera UnixWare 7.1.4 for x86-based systems
Solaris 2.6, 8, 9 and 10
Tru64 UNIX 5.1


Seguro que ya habeis leído por ahí que en Unix todo son ficheros (incluído los directorios!). Pues este comando lo viene a poner de manifiesto porque nos muestra tanto ficheros abiertos, como dispositivos /dev, como conexiones de red y todo ello asociado al proceso que los posee.

Con este comando ya podemos contestar a las preguntas ¿ quién está generando tal o cual tráfico ? ¿ hay algún proceso oracle conectado al LDAP ? ¿ qué procesos están bloqueando el sistema de ficheros que quiero desmontar ? y muchas otras.

Aquí proporciono algunos ejemplos que hablan por sí solos.

Todos los procesos y objetos en uso por ellos

# lsof
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 38620 291774 /sbin/init

Casi no hace falta comentario porque la cabecera es suficientemente aclaratoria.


Muestra los procesos que utilizan algún objeto de /lib o directorios descendientes

# lsof +D /lib


Muestra los procesos con puertos TCP a la escucha sin resolución de nombres
# lsof -P | grep LISTEN
sshd 2395 root 3u IPv6 6947 TCP *:22 (LISTEN)
mysqld 2513 mysql 10u IPv4 7086 TCP *:3306 (LISTEN)
smbd 2579 root 20u IPv4 7265 TCP *:445 (LISTEN)
smbd 2579 root 21u IPv4 7266 TCP *:139 (LISTEN)

Objetos abiertos por el proceso init

# lsof -c init
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 38620 291774 /sbin/init
init 1 root mem REG 253,0 125736 618768 /lib/ld-2.5.so
init 1 root mem REG 253,0 1602320 618769 /lib/libc-2.5.so
init 1 root mem REG 253,0 16428 618783 /lib/libdl-2.5.so
init 1 root mem REG 253,0 242880 618787 /lib/libsepol.so.1
init 1 root mem REG 253,0 93508 618788 /lib/libselinux.so.1
init 1 root 10u FIFO 0,16 1286 /dev/initctl

lunes, 19 de enero de 2009

Linux: carpeta pública con SAMBA

La siguiente receta permite configurar una carpeta de acceso público sin necesidad de usar usuario y contraseña (que no será solicitada).


En principio es para la versión 3.0.28 de Samba que en CentOS 5.2 está constituida por los paquetes:
samba-common-3.0.28-1.el5_2.1
samba-client-3.0.28-1.el5_2.1
samba-3.0.28-1.el5_2.1


El siguiente es el contenido ejemplo de un fichero que permite que un recurso compartido llamado "publica" y localizado en "/home/publica" sea de acceso libre sin usuario y contraseña:
[global]
workgroup = WORKGROUP
server string = Samba Server
log file = /var/log/samba/%m.log
max log size = 0
security = share
usershare allow guests = yes
browseable = yes
[publica]

path = /home/publica
writeable = no
guest ok = yes



En este caso, además la carpeta es de sólo lectura. Como complemento a esta configuración es necesario que el fichero /etc/samba/smb.conf contenga un mapeo para el usuario "guest" a un usuario local con permisos de ejecución y lectura para las carpetas y lectura para los ficheros. Por ejemplo, el fichero que viene por defecto:


# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest



El resultado de la configuración de smb.conf lo puedes comprobar con "testparm":

$testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[publica]"
Loaded services file OK.Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]

server string = Samba Server
security = SHARE
log file = /var/log/samba/%m.log
max log size = 0
usershare allow guests = Yes
[publica]

path = /home/publica
guest ok = Yes


Observa que hay opciones que desaparecen con el comando anterior. El motivo puede ser que esté mal escrita o no soportada y es ignorada, o que coincide con el valor por defecto de la propiedad. Una forma interesante de comprobar ambas cosas y sobre todo ver las opciones de configuración sobre las que debemos actuar es "testparm -v".


Un último obstáculo puede ser tener SElinux activado. Se manifiesta en que no puedes publicar directorios de creación reciente y si el /tmp o el /home. Antes de volverte loco con la configuración de SAMBA deshabilita SElinux para probar el acceso a la carpeta.

sábado, 17 de enero de 2009

IBM: ftp público

Si estás interesado la descarga de software público IBM te recomiendo que visites ftp://ftp.software.ibm.com/

Además de software hay cosas curiosas como informes de negocio como por ejemplo:
ftp://ftp.software.ibm.com/annualreport/2007/2007_ibm_financials.pdf

Es todo legal, así que como siempre a leer, a probar y a aprender de IBM.

viernes, 16 de enero de 2009

AIX: descarga selectiva de actualizaciones

Hace poco tuve que actualizar un servidor con sistema operativo IBM AIX 5.2 del cual no tenía nada más que los CDs con la instalación base (y ya es un milagro que los tuviera por lo antigua de la versión de AIX). La pega era que la velocidad de descarga de la que disponía no era mucha por lo que el DownloadManager me daba 3 horas de descarga que no tenía. El instinto de supervivencia me hizo encontrar un tip que os puede servir a vosotros también.

La cuestión era instalar un paquete y actualizarlo a la misma versión del ML de AIX. La actualización era necesaria puesto que se trataba de un comando que consulta la ODM y daba errores graves al intentar generar la imagen mkszfile.

El término clave de este post es el "CompID" cuya definición echo de menos en la lista de términos de soporte, Support terms for AIX and System p, y permite la descarga selectiva desde ftp://ftp.software.ibm.com/. Viene a ser el identificador de una compilación de paquetes, actualizaciones, niveles de mantenimiento, etc. .

CASO 1: Mi conexión a Internet es buena
Si mi conexión a internet es buena, puede que no me importe descargar el ML completo. Como en mi caso necesitaba el AXI52-04, solo tenía que visitar el FTP de IBM, concretamente el enlace siguiente y descargar el .gz:
ftp://ftp.software.ibm.com/aix/fixes/52/ml/520004/

CASO 2: Conocemos el CompID de la compilación del ML/TL
En ese caso, si suponemos que el ComID es el "5765E6200" entonces visitamos el enlace siguiente y escogemos el paquete/s estrictamente necesarios para nuestra tarea.
ftp://ftp.software.ibm.com/aix/fixes/byCompID/5765E6200/

¿ Cuándo podemos conocer el CompID ?
No siempre será fácil obtenerlo pero a veces lo tenemos en el propio anuncio del bug o del parche
(ej: http://archives.neohapsis.com/archives/aix/2001-q1/0012.html)

CASO 3: No conocemos el CompID
En ese caso lo vamos a averiguar para aprovecharnos del FTP. Resumo los pasos:

1.- Desde Fix Central nos preparamos para descargar el ML.



2.- De la lista que nos sale seleccionamos el enlace que nos interesa.
3.- Seguimos hasta que nos propone los 3 métodos de descarga. Seleccionamos "Download using Bulk FTP" y continuamos hasta que nos muestre la información del servidor FTP, usuario, contraseña y directorio donde estará el software para descargar.
4.- Nos conectamos al FTP y al hacer un ls obtenemos algo como lo siguiente:
[...]
lrwxrwxrwx 1 17590 446 62 Jan 17 16:27 97.bff -> /aix/fixes/byCompID/5765E6200/bos.net/bos.net.ncs.5.2.0.40.bff
lrwxrwxrwx 1 17590 446 63 Jan 17 16:27
98.bff -> /aix/fixes/byCompID/5765E6200/bos.rte/bos.rte.diag.5.2.0.40.bff
lrwxrwxrwx 1 17590 446 69 Jan 17 16:27 99.bff -> /aix/fixes/byCompID/5765E6200/bos.svprint/bos.svprint.ps.5.2.0.40.bff
[...]

Efectivamente se trata de enlaces simbólicos y la URL completa es
Realmente no necesitamos saber la URL anterior puesto que podemos descargar el paquete directamente, digamos el 98.bff si nos interesaba la actualizacion bos.net.ncs.5.2.0.40.bff.

La que es interesante es la URL del ML. La anotaremos en nuestra wiki personal o bookmark y hacer la descarga selectiva del paquete de AIX que nos interese. En este caso es:

jueves, 15 de enero de 2009

Recursos de virtualización

Tengo por ahí algunos enlaces sobre virtualización que me gustaría compartir con vosotros. Son un compendio de fabricantes, videos y foros que cubren bastante bien lo que hay por ahí.

http://virtualization.sys-con.com/
http://www.virtualizacion.com/
http://www.virtualizationconference.com/
http://vmworld.com/

martes, 13 de enero de 2009

SANS Top 25 errors

Recomiendo la lectura en la intimidad, para que no nos noten el sonrojo, de la publicación reciente del top 25 de errores de SANS. Es una web muy recomendable en materia de prevención, correción y buenas prácticas que hay que tener a mano.

Esto me recuerda que debo tratar algún día sobre otro proyecto interesante, The Open Web Application Security Project (OWASP), que tiene la vocación de proporcionar el estado del arte y todo tipo de metodologías y recomendaciones para mejorar la seguridad de las aplicaciones web.

Pensemos por un instante que, tarde o temprano, solo nos quedará el puerto 80(HTTP) o 443(HTTPS) abierto en nuestro cortafuegos y en nuestros servidores públicos. Ese día estaremos a merced de la seguridad de un formulario web seguramente en PHP que alguién hizo hace tiempo .... ¡ uis que miedo !

AIX/Linux: tcpdump tips

Uno se hace adicto al comando tcpdump , no sólo para ver si hay tráfico TCP sino porque nos permite también ver tráfico UDP (aunque parezca un contrasentido en vista del nombre del comando), ARP etc.. asilado o conjunto e incluso detectar errores de comunicaciones, por ejemplo http.

En este post te cuento alguna cosilla que puede ser de utilidad si tienes que enfocar un problema visible a éste nivel.


Monitorización de tráfico
Primero hago la observación de que es posible el comando tcpdump no muestre nada:

# tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type 1, capture size 96 bytes

Es debido a que tenemos varias interfaces configuradas y UP. Se queda escuchando en la primera. Evidentemente la forma de obtener el tráfico que nos interesa indicándole la interfaz:
# tcpdump -i en4 host
Para evitar tráfico propio(nuestra conexión SSH) y paquetes inevitables que no aportan nada a la monitorización (DNS,arp, etc..):
# tcpdump not port 22 and not host dns1.dns.org and not arp
Y todo junto:
# tcpdump -i en4 not host dns1.dns.org and not arp and not port ldap and not port nfs
También sirve para monitorizar tráfico UDP:
# tcpdump -i en4 udp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en4, link-type 1, capture size 96 bytes
13:19:43.176590 IP host1.rmc > host2.rmc: udp 88
13:19:43.176834 IP host2.rmc > host1.rmc: udp 88
[...]
Captura de tráfico

Con la siguiente formulación capturamos el tráfico sin límite de tamaño de paquete y lo tratamos en wireshark:
# tcpdump -s0 -i eth0 -w /tmp/traza.dump host host1.org

En la siguiente imagen, al cargar en wireshark la traza, aparecen unas líneas negras con color de carácter rojo que indican errores en el tráfico capturado (RST, DUP, etc...)..Permítaseme bajar la resolución para mantener la discrección en el ejemplo:


Además nos permite interpretar el stream de acuerdo al protocolo de alto nivel al que corresponde (Follow TCP Stream). En el ejemplo siguiente nos permite ver toda la traza desde la perspectiva del protocolo HTTP
.


Depuración de firewall con tcpdump
Podemos evitar al firewall perimetral que haga logging de algunas reglas si su única utilidad es comprobar si tal o cual tráfico atraviesa el cortafuegos sin problemas.

Siguiendo con la idea de usar tcpdump podemos montar un sencillo escenario donde hagamos mirror de los puertos interior y/ exterior del cortafuegos, conectando los puertos en mirror a nuestro equipo monitor y levantando las interfaces (con IP privada en AIX y sin IP en Linux). Activaremos la escucha tcpdump y pediremos a nuestros usuarios que generen el tráfico del que se tiene dudas. Lógicamente si atraviesa el firewall se verá tanto en una como en la otra interfaz. En caso contrario solo en una de ellas.
De esta manera tenemos incluso la certeza de que hay tráfico, lo cual significa que el routing es correcto, etc...

Es ciertamente peligroso si esto lo hace alguien malicioso en nuestra organización, ya que es la forma más poderosa de ataque hombre en medio.


jueves, 8 de enero de 2009

AIX: alt_disk_install

En este post quiero presentar una familia de comandos de IBM AIX (AIX4.3, AIX5L, AIX6) que me permite trabajar con gran tranquilidad incluso en aquellas operaciones más "arriesgadas" con el rootvg o actualizando masivamente AIX porque permite volver atrás cuando todo lo demás ha fallado.

Se trata del comando alt_disk_install y familia, y es el complemento perfecto al backup con mksysb.

Respaldo de un sistema IBM AIX

Empezaré con un ejemplo sencillo en el que vamos a crear una copia exacta del rootvg que incluye todos los ficheros personalizados, usuarios, configuraciones hardware, etc.. del sistema clonado:


# alt_disk_install -B -C hdisk2
+-------------------------------------------------------------------=---+
ATTENTION: calling new module /usr/sbin/alt_disk_copy. Please see thealt_disk_copy man pageand documentation for more details.
Executing command: {/usr/sbin/alt_disk_copy -O -B -d "hdisk2"}
+-------------------------------------------------------------------=---+
Calling mkszfile to create new /image.data file.
Checking disk sizes.
Creating cloned rootvg volume group and associated logical volumes.
Creating logical volume alt_hd5
Creating logical volume alt_hd6
Creating logical volume alt_hd8
Creating logical volume alt_hd4
Creating logical volume alt_hd2
Creating logical volume alt_hd9var
Creating logical volume alt_hd3
Creating logical volume alt_hd1
Creating logical volume alt_hd10opt
Creating logical volume alt_lg_dumplv
Creating /alt_inst/ file system.
Creating /alt_inst/home file system.
Creating /alt_inst/opt file system.
Creating /alt_inst/tmp file system.
Creating /alt_inst/usr file system.
Creating /alt_inst/var file system.
Generating a list of filesfor backup and restore into the alternate file system...
Backing-up the rootvg files and restoring them to thealternate file system...
Modifying ODM on cloned disk.
Building boot image on cloned disk.
Resetting all device attributes.
NOTE: The first boot from altinst_rootvg will prompt to define the newsystem console.
[...]

Esta operación, en un sistema POWER5 con carga al 60% el tiempo, no baja de 30 minutos. Al finalizar con "lspv" veremos:

# lspv
hdisk0 00c4b08edd400579 rootvg active
hdisk1 none none
hdisk2 00c4b08e0e0397d7 altinst_rootvg

El disco hdisk2 es en estos momentos totalmente bootable, lo que quiere decir que en caso de catástrofe solo tenemos que entrar en el SMS e indicar éste disco como de BOOT.

Posteriormente se pueden aplicar actualizaciones (ver cómo obtener actualizaciones eficientemente) con otro comando de la familia:

# alt_rootvg_op -C -b update_all -l /repos/aix53-ml5-03
Installing optional filesets or updates into alt_inst_rootvg...
install_all_updates: Initializing system parameters.
install_all_updates: Log file is /var/adm/ras/install_all_updates.log
install_all_updates: Checking for updated install utilities on media.
install_all_updates: Updating install utilities to latest level on media.
+------------------------------------------------------------------+
Pre-installation Verification
...

+------------------------------------------------------------------+
Verifying selections...done
Verifying requisites...done
Results...


Otros formulaciones similares:


# alt_disk_copy -P'all' -d hdisk2 -b update_all -l /repos/aix53-ml5-03
# alt_disk_install -C -B -f /tmp/lista-apar.txt -l /repos/aix-apars hdisk2



Instalación de AIX desde un CLON

Visto todo lo anterior si si añadimos "-O" al comando tendremos un AIX idéntico al de nuestro servidor pero sin personalización de hardware y dispositivos (casi "limpio"). Los ficheros de configuración habituales del /etc y los usuarios si que se conservan, de manera que hay que tener esa precaución. El comando queda así:

# alt_disk_install -O -B -C hdisk2


Si el disco hdisk2 es un disco externo, podemos asignarlo a otro servidor con la posibilidad de ponerse a explotar la copia en tiempo record. Sumando ésto con la virtualización tendremos un servidor funcionando en pocas horas tan operativo y actualizado como el que escojamos para clonar.



lunes, 5 de enero de 2009

AIX: Administración de actualizaciones con SUMA

SUMA, Service Update Management Assitant, es una utilidad incorporada en IBM AIX 5.3 similar a las que todos conocemos de Linux como "yum" o "apt-get". SUMA permite principalmente la operaciones de preview y download, aunque incorpora una tercera clean (combina descarga y purga).

La finalidad estrella de esta utilidad es permitir automatizar la descarga de APARs, manteinance levels (ML), technology levels (TL) , etc.. y demás grupos de software que antes teníamos que descargar de el Fix Central. Es muy recomendable tener a mano las definiciones y manuales de buenas prácticas de mantenimiento AIX que publica IBM para lo que recomiendo que se visite:

AIX updates Version 3: How to work the puzzle
AIX V5.3 software maintenance best practices
Service and support best practices for Power Systems

Volviendo con la utilidad SUMA permite cosas tan interesantes como descargar actualizaciones para posteriormente instalar en otros servidores offline. El ejemplo siguiente descarga:

suma -x -a Action=Download -a RqType=ML -a RqName=5300-07 \
-a FilterML=5300-06 -a NotifyEmail="correo@svr"


o simplemente consultar qué descargaría:


suma -x -a Action=Preview -a RqType=ML -a RqName=5300-07 \
-a FilterML=5300-06 -a NotifyEmail="correo@svr"



Como se observa le hemos indicado que siempre notifique al correo electrónico el resultado de la operación.

SUMA tiene la particularidad de que puede programar directamente la ejecución períódica o postergada haciendo la anotación en el crontab, lo que a mi juicio viola un poquito el espíritu "atómico" de las herramientas de Unix, vamos, aquello de que cada cosa es para lo que es. En fin, ahí va el ejemplo que intenta la descarga anterior para las 2am del próximo lunes


suma -s "0 2 * * 1" -x -a Action=Download -a RqType=ML -a \
RqName=5300-07 -a FilterML=5300-06 -a NotifyEmail="correo@svr"

La curiosidad es que no la repetirá la descarga el próximo lunes si no añadimos "-a Repeats=y"

Merece la pena echar un vistazo al comando SUMA y al tutorial de IBM Update your AIX system with SUMA para sacar el máximo provecho.

jueves, 1 de enero de 2009

AIX: códigos de error

Cuando obtenemos en el momento más inoportuno un error grave podemos necesitar tener a mano la lista completa de errores para diagnosticarlo. No descarte la búsqueda bruta en internet, pero es recomendable tener a mano los enlaces específicos de IBM siquientes:


Códigos de progreso o error en AIX (hasta Power5)
Códigos de referencia para POWER6


Los códigos que vamos a buscar en estos enlaces son los que obtenemos con "errpt", en el display frontal de nuestros servidores o en la HMC. Si disponemos de la consulta online podemos deshacernos de los manuales de códigos que adornan nuestras estanterías y por supuesto es hora de sacarlos de las salas de servidores (por aquello de que el polvo de celulosa aumenta el riesgo de incendio por chispa eléctrica).

Son especialmente interesantes los AIX IPL progress codes que informan sobre el progreso en el boot de nuestros servidores. Si haciendo el boot éste no se completa el último código IPL nos da la pista de donde está el problema.

Como propina tenemos estos otros dos enlaces de soporte de IBM para pSeries:
pSeries Support
AIX/pSeries Fix Central