martes, 17 de marzo de 2009
AIX: openssh
Mar 17 00:21:58 machine auth|security:debug /usr/sbin/sshd PAM: pam_acct_mgmt: error La cuenta del usuario ha caducado
Mar 17 00:21:58 machine auth|security:info sshd[221312]: PAM rejected by account configuration[17]: La cuenta del usuario ha caducado
Ó
Mar 17 00:26:57 server auth|security:info syslog: ssh: failed login attempt for user from host
Mar 17 00:26:57 server auth|security:info sshd[507984]: Failed password for user from IP port 40984 ssh2
Nos puede confundir el hecho de que tuviéramos otro demonio SSH funcionando anteriormente (compilado por nosotros mismos).
En resumen, lo que está pasando es que no tenemos bien configurado el /etc/pam.conf en el que hay que incluir:
sshd auth required /usr/lib/security/pam_aix
sshd account required /usr/lib/security/pam_aix
sshd password required /usr/lib/security/pam_aix
sshd session required /usr/lib/security/pam_aix
Para permitir que el servicio sshd tenga la opción de autenticar. Si teníamos otro servidor SSH funcionando antes, probablemente no estaba compilado con PAM.
viernes, 13 de febrero de 2009
AIX: Cannot set process environment
$ su -
Passwd:
3004-505 Cannot set process environment
Solución
La solución pasa por detectar qué hay de anómalo en el perfil en este caso de root. Contamos según el resultado con que sí sabemos la contraseña del root (en otro caso habríamos obtenido un error de autenticación) y podemos hacer "su - -c "
$ sudo - -c 'usrck -n root'
3001-602 The user name root is not unique.
3001-603 The UID 0 is duplicated for user root.
Antes de asustarnos más comprobamos quiénes son esos dos usuarios con UID "0".
$ grep :0:0: /etc/passwd
root:!:0:0::/:/usr/usr/bin/ksh
root:!:0:0::/:/usr/bin/ksh
Se trata de eliminar una de las entradas. Como podemos hacer uso del "su" en las condiciones arriba descritas, hacemos una copia del /etc/passwd la retocamos y la devolvemos a su sitio de nuevo ya retocada.
En este caso, el problema que tenía el usuario era ese, pero el comando usrck podía habernos advertido de otra cosa diferente. Con "su -" nos apañamos para arreglarlo.
Origen del problema
Realmente son 2. El primero es un despiste humano o un fallo del smit al modificar el shell (debe hacer mucho tiempo porque no lo recuerdo). Pero el decisivo es que al migrar de AIX 5.2 a AIX6.1 al shell del root les ha puesto /usr/ delante, lo que ha convertido el shell de la primera de las 2 entradas en inexistente.
viernes, 6 de febrero de 2009
AIX: savebase failed
Ej:
# extendvg rootvg hdisk1
0516-1734 extend vg: Warning, savebase failed. Please manually run 'savebase' before rebooting.
Lo más preocupante es que ejecutamos "savebase" sin obtener ningún error pero el mensaje anterior vuelve a aparecer en la próxima ocasión que hacemos algo delicado.
Se confirman las sospechas cuando el verbose dice lo siguiente:
# savebase -v
non-bootable LV name given
SOLUCION
Lo primero es asegurarnos de que /dev/ipldevice apunta al dispositivo correcto. Para nuestro ejemplo, el rootvg está en el disco hdisk0 y nos vamos a asegurar de que sea así:
# rm /dev/ipldevice
# ln /dev/hdisk0 /dev/ipldevice
# bosboot -ad /dev/ipldevice
bosboot: Boot image is 36250 512 byte blocks.
# savebase -v
saving to '/dev/hd5'
145 CuDv objects to be saved
706 CuAt objects to be saved
47 CuDep objects to be saved
75 CuVPD objects to be saved
474 CuDvDr objects to be saved
2 CuPath objects to be saved
0 CuPathAt objects to be saved
0 CuData objects to be saved
Number of bytes of data to save = 98151
Compressing data
Compressed data size is = 25679
bi_start = 0x3600
bi_size = 0x11cfc00
bd_size = 0x11afc00
ram FS start = 0x513130
ram FS size = 0xc9cad0
sba_start = 0x11b3200
sba_size = 0x20000
sbd_size = 0x6453
Checking boot image size:
new save base byte cnt = 0x6453
Wrote 25683 bytes
Successful completion
Finalmente configuramos el disco en el bootlist si no lo estaba:
# bootlist -m normal hdisk0
# bootlist -m normal -o
hdisk0
miércoles, 4 de febrero de 2009
AIX: target hdisk does not exist
# alt_disk_install -C -B hdiskpower1
0505-125 alt_disk_install: target disk hdiskpower1 does not exist.
En mi caso era debido a que el disco estaba asignado también a otro host en la cabina de discos. Dicho host no lo estaba usando pero casualmente era un VIOS y lo tenía bloqueado porque existía un mapeo sobre el disco. La conclusión es que solamente el mapeo (el host virtual estaba parado esperando el disco) bloquea el disco.
La solución fué quitar el mapeo en el VIOS para que me permitiera trabajar en el otro host.
miércoles, 28 de enero de 2009
c# y excel
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) + ""+"td>";
}
writer.WriteLine(lineaweb+""+"tr>");
}
writer.WriteLine(""+"table>"+"body>"+"html>");
}
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
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
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
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
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.
98.bff -> /aix/fixes/byCompID/5765E6200/bos.rte/bos.rte.diag.5.2.0.40.bff
Efectivamente se trata de enlaces simbólicos y la URL completa es
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
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
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
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:
# tcpdumpEs 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: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type 1, capture size 96 bytes
# 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 nfsTambié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áficoCon 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