jueves, 16 de agosto de 2012

Usando sudo

Sudo - Descripción de la herramienta

Es una utilidad GNU muy versátil que permite a un usuario común (sin privilegios)  correr comandos como si fuera root u otro usuario.
La configuración de sudo se guarda en /etc/sudores y este archivo se modifica mediante el comando visudo. Podemos invocar a este comando ya sea como root o mediante sudo visudo

[hmartine@infraUX ~]$ sudo /usr/sbin/visudo
[sudo] password for hmartine:

Para listar los contenidos del sudoers sin comentarios, ni blancos para poder visualizarlo mas facil corremos el comando que vemos abajo

[root@infraUX ~]# cat /etc/sudoers |grep -v "^#" |grep -v "^$"
User_Alias ADMINS = hmartine, dmelo
root    ALL=(ALL)      ALL
ADMINS  ALL=(ALL)      ALL


En el ejemplo de arriba se creo un alias, el cual funciona como un contenedor al que se le asignaron los usuarios hmartine y dmelo. Luego tanto al usuario root como al grupo ADMINS se les otorga permisos para que ejecuten desde cualquier terminal, como cualquier usuario cualquier comando.

Para poder ver que comandos puedo correr con mi usuario debo correr el comando sudo -l



[hmartine@infraUX ~]$ sudo -l
[sudo] password for hmartine:
Matching Defaults entries for hmartine on this host:
    requiretty, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC
    KDEDIR LS_COLORS MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE
    LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME
    LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS
    _XKB_CHARSET XAUTHORITY"

Runas and Command-specific defaults for hmartine:


User hmartine may run the following commands on this host:
    (ALL) ALL

Una forma mas segura de usar sudo es explicitar específicamente los comandos que queremos usar.


La ventaja principal de usar sudo es la de tener trazabilidad y control acerca de los comandos que se ejecutan como root.

lunes, 9 de abril de 2012

Presentacion de discos via iSCSI

El iSCSI es un protocolo cliente-servidor que permite entregar un dispositivo de bloque de disco (LUN) transportados gracias al protocolo IP.
El layout típico consta de una red IP y uno o varios clientes  iSCSI o también denominados initiators, ya que son los que inician la comunicación contra los servers iSCSI o targets (destino)
Para poder identificarse entre si los targets y los initators utilizan el un identificador único llamado iqn (iSCSI qualified name)

Primero debemos tener instalado el software de iSCSI initiator, podemos verificar esto con el comando swlist

root@ttsdevdb /root #swlist -l product iSCSI-00
# Initializing...
# Contacting target "ttsdevdb"...
#
# Target:  ttsdevdb:/
#


# iSCSI-00              B.11.11.03f    HP-UX iSCSI Software Initiator
  iSCSI-00.ISCSI-SWD    B.11.11.03f    HP-UX iSCSI Software Initiator

En caso de no tenerlo instalado podemos bajar el software de http://software.hp.com.
Ya con el soft instalado, veremos que este esta instalado en /opt/iscsi/bin

Lo que tenemos que averiguar es el iqn de nuestro equipo para poder darlo de alta en nuestro storage (en este caso un NetApp) 

root@ttsdevdb /opt/iscsi/bin #./iscsiutil -l
Initiator Name            : iqn.1986-03.com.hp:ttsdevdb.120901577
Initiator Alias           :

Authentication Method     :
CHAP Method               : CHAP_UNI
Initiator CHAP Name       :
CHAP Secret               :
NAS Hostname              :
NAS Secret                :
Radius Server Hostname    :
Header Digest             : None,CRC32C (default)
Data Digest               : None,CRC32C (default)
SLP Scope list for iSLPD  :

Ahora le agregamos un alias al inititator para mayor claridad

root@ttsdevdb /opt/iscsi/bin #./iscsiutil -iA ttsdevdb
iscsiutil: Initiator Alias "ttsdevdb" has been successfully updated.

Verificamos que el cambio se haya realizado

root@ttsdevdb /opt/iscsi/bin #./iscsiutil -l
Initiator Name            : iqn.1986-03.com.hp:ttsdevdb.120901577
Initiator Alias           : ttsdevdb

Authentication Method     :
CHAP Method               : CHAP_UNI
Initiator CHAP Name       :
CHAP Secret               :
NAS Hostname              :
NAS Secret                :
Radius Server Hostname    :
Header Digest             : None,CRC32C (default)
Data Digest               : None,CRC32C (default)
SLP Scope list for iSLPD  :

Agregamos el target que en este caso es la IP de nuestra caja de discos (NetApp)

root@ttsdevdb /opt/iscsi/bin #./iscsiutil -a -I 10.1.11.81
Target address "10.1.11.81:3260,1" has been successfully added.

En este momento estamos listos para que nos asignen la LUN por iSCSI de manera que corremos un ioscan previo a la presentacion de la LUN

root@ttsdevdb /opt/iscsi/bin #ioscan -fnC disk
Class     I  H/W Path     Driver S/W State   H/W Type     Description
=====================================================================
disk      0  0/0/1/1.2.0  sdisk CLAIMED     DEVICE       SEAGATE ST318203LC
                         /dev/dsk/c1t2d0   /dev/rdsk/c1t2d0
disk      1  0/0/2/0.2.0  sdisk CLAIMED     DEVICE       SEAGATE ST318203LC
                         /dev/dsk/c2t2d0   /dev/rdsk/c2t2d0
disk      2  0/0/2/1.2.0  sdisk CLAIMED     DEVICE       HP      DVD-ROM 304
                         /dev/dsk/c3t2d0   /dev/rdsk/c3t2d0

Una vez asignada la LUN corremos de nuevo el ioscan

root@ttsdevdb /opt/iscsi/bin #ioscan -fnC disk
Class     I  H/W Path       Driver   S/W State   H/W Type     Description
==========================================================================
disk      0  0/0/1/1.2.0    sdisk    CLAIMED     DEVICE       SEAGATE ST318203LC
                           /dev/dsk/c1t2d0   /dev/rdsk/c1t2d0
disk      1  0/0/2/0.2.0    sdisk    CLAIMED     DEVICE       SEAGATE ST318203LC
                           /dev/dsk/c2t2d0   /dev/rdsk/c2t2d0
disk      2  0/0/2/1.2.0    sdisk    CLAIMED     DEVICE       HP      DVD-ROM 304
                           /dev/dsk/c3t2d0   /dev/rdsk/c3t2d0
disk      3  255/0/0.0.0.0  sdisk    CLAIMED     DEVICE       NETAPP  LUN

Generamos los special files para el dispositivo nuevo

root@ttsdevdb /opt/iscsi/bin #insf -H 255/0/0.0.0.0
insf: Installing special files for sdisk instance 3 address 255/0/0.0.0.0

Verificamos que se hayan creado

root@ttsdevdb /opt/iscsi/bin #ioscan -fnC disk
Class     I  H/W Path       Driver   S/W State   H/W Type     Description
==========================================================================
disk      0  0/0/1/1.2.0    sdisk    CLAIMED     DEVICE       SEAGATE ST318203LC
                           /dev/dsk/c1t2d0   /dev/rdsk/c1t2d0
disk      1  0/0/2/0.2.0    sdisk    CLAIMED     DEVICE       SEAGATE ST318203LC
                           /dev/dsk/c2t2d0   /dev/rdsk/c2t2d0
disk      2  0/0/2/1.2.0    sdisk    CLAIMED     DEVICE       HP      DVD-ROM 304
                           /dev/dsk/c3t2d0   /dev/rdsk/c3t2d0
disk      3  255/0/0.0.0.0  sdisk    CLAIMED     DEVICE       NETAPP  LUN
                           /dev/dsk/c4t0d0   /dev/rdsk/c4t0d0

Hacemos el pvcreate y agregamos el disco a un VG

root@ttsdevdb /opt/iscsi/bin #pvcreate /dev/rdsk/c4t0d0
Physical volume "/dev/rdsk/c4t0d0" has been successfully created.
root@ttsdevdb /opt/iscsi/bin #vgextend vg01 /dev/dsk/c4t0d0
Volume group "vg01" has been successfully extended.
Volume Group configuration for /dev/vg01 has been saved in /etc/lvmconf/vg01.conf

Verificamos el estado del VG

root@ttsdevdb /opt/iscsi/bin #vgdisplay -v vg01
--- Volume groups ---
VG Name                     /dev/vg01
VG Write Access             read/write
VG Status                   available
Max LV                      255
Cur LV                      4
Open LV                     4
Max PV                      16
Cur PV                      2
Act PV                      2
Max PE per PV               4342
VGDA                        4
PE Size (Mbytes)            4
Total PE                    8680
Alloc PE                    4340
Free PE                     4340
Total PVG                   0
Total Spare PVs             0
Total Spare PVs in use      0

   --- Logical volumes ---
   LV Name                     /dev/vg01/lvol1
   LV Status                   available/syncd
   LV Size (Mbytes)            2048
   Current LE                  512
   Allocated PE                512
   Used PV                     1

   LV Name                     /dev/vg01/lvol2
   LV Status                   available/syncd
   LV Size (Mbytes)            2048
   Current LE                  512
   Allocated PE                512
   Used PV                     1

   LV Name                     /dev/vg01/lvu01
   LV Status                   available/syncd
   LV Size (Mbytes)            10192
   Current LE                  2548
   Allocated PE                2548
   Used PV                     1

   LV Name                     /dev/vg01/lvol5
   LV Status                   available/syncd
   LV Size (Mbytes)            3072
   Current LE                  768
   Allocated PE                768
   Used PV                     1


   --- Physical volumes ---
   PV Name                     /dev/dsk/c2t2d0
   PV Status                   available
   Total PE                    4340
   Free PE                     0
   Autoswitch                  On

   PV Name                     /dev/dsk/c4t0d0
   PV Status                   available
   Total PE                    4340
   Free PE                     4340
   Autoswitch                  On

Ahora podríamos migrar los LVs del disco interno al disco iSCSI para tener un mayor nivel de protección a fallas, fds


root@ttsdevdb /opt/iscsi/bin #pvmove /dev/dsk/c2t2d0 /dev/dsk/c4t0d0
Transferring logical extents of logical volume "/dev/vg01/lvol1"...


Luego cuando finalice el pvmove, hacemos un vgreduce del disco /dev/dsk/c2t2d0 



jueves, 29 de marzo de 2012

Como ver si un disco (interno) tiene bloques defectuosos en HP-UX

Este procedimiento no es para usarse en discos de SAN, lo que se hace es var a bajo nivel la lista de sectores defectuosos del manejador de volumenes.

Primero detectamos los discos internos

root # ioscan -fnC disk |head
Class     I  H/W Path        Driver   S/W State   H/W Type     Description
===========================================================================
disk      0  0/0/3/0.0.0.0   sdisk    CLAIMED     DEVICE       TEAC    DV-28E-N
                            /dev/dsk/c0t0d0   /dev/rdsk/c0t0d0
disk      1  0/1/1/0.0.0     sdisk    CLAIMED     DEVICE       HP 73.4GHUS153073VL3800
                            /dev/dsk/c2t0d0   /dev/rdsk/c2t0d0
disk      2  0/1/1/0.1.0     sdisk    CLAIMED     DEVICE       HP 73.4GST373454LC
                            /dev/dsk/c2t1d0   /dev/rdsk/c2t1d0
disk      3  0/2/1/0.8.0.33.0.0.0   sdisk    CLAIMED     DEVICE       HP      OPEN-E
                            /dev/dsk/c15t0d0   /dev/rdsk/c15t0d0

Una vez identificados los special files de los discos internos ejecutamos el comando

# echo 2400?20X | adb /dev/dsk/c2t0d0
2400:           44454645        43543031        0               0
                0               0               0               0
                0               0               0               0
                0               0               0               0
                0               0               0               0
# echo 2400?20X | adb /dev/dsk/c2t1d0
2400:           44454645        43543031        0               0
                0               0               0               0
                0               0               0               0
                0               0               0               0
                0               0               0               0


La salida debe contener todos ceros a partir de la 3 columna en adelante, caso contrario el disco tiene bloques dañados.

NOTA: Este procedimiento no funciona a partir de HP-UX 11v3 ya que cuando se da formato a un disco mediante pvcreate ya no se reservan bloques de datos para reubicar sectores dañados (BBRA)

lunes, 9 de enero de 2012

Clonado de un sistema HPUX mediante un servidor Ignite-UX

Vamos a hacer una prueba de recuperación de un servidor PA-RISC en otro server de similares caracteristicas. El procedimiento lo haremos mediante un Ignite-UX server

Hay un par de consideraciones que debemos hacer. Primero, es importante para poder tener éxito en este procedimiento que el cable ethernet cableado a la core-lan del sistema y que la velocidad en el puerto del switch este seteado en auto. Una vez instalado el sistema se puede fijar la velocidad.
Segundo, para que el procedimiento funcione debemos estar seguros de que los servidores estan dentro del mismo segmento de red debido a que durante el booteo del servidor se utilizaran protocolos que hacen broadcast, si los servidores estan en dos redes distintas se puede instalar un boot helper, dentro del segmento del cliente, para que este le otorge una direccion IP pero esto esta fuera del alcanze de esta nota.

Antes de empezar con el procedimiento vamos a chequear si esta activo el daemon de bootpd, tftp y la configuración NFS. Estos protocolos deben estar activos y ya que nos van a poder permitir bootear por red y tranferir los kernels y archivos necesarios para la instalación.

AVAYA:ignite /root # cat /etc/inetd.conf |grep bootpd
bootps      dgram  udp wait   root /usr/lbin/bootpd   bootpd -d 3
tftp        dgram  udp wait   root /usr/lbin/tftpd    tftpd\
        /opt/ignite  /var/opt/ignite

La configuración de NFS debe permitir que nuestro cliente tenga acceso a la configuración de los clientes /var/opt/ignite/clients y al las imágenes /var/opt/ignite/recovery/archives/<nombre_del_server>

/var/opt/ignite/clients -anon=2,access=ignite:ignite-e1:hi2pdb1:hi2pdb1-e1:hi2pci1:hi2pci1-e1:hi2pcln1:hi2pcln1-e1:hi2pap1:hi2pap1-e1:hi2pap2:hi2pap2-e1:hi2pap3:hi2pap3-e1:hi2pap4:hi2pap4-e1:hb1pci1:hb1pci1-e1:hb1pdb1:hb1pdb1-e1:hb1pap8:hb1pap8-e1:hbldbk1:hbldbk1-e1:hbldbk2:hbldbk2-e1:hf2pdb00:hf2pdb00-e1:hprdmn00:hprdmn00-e1:hprdmn01:hprdmn01-e1:hsapd01:hsapd01-e1:hsapd08:hsapd08-e1:hugsapp1:hugsapp1-e1:hi2pap3:hi2pap3-e1:hi2pap4:hi2pap4-e1:hi2pap5:hi2pap5-e1:hptest01:hptest01-e1
/var/opt/ignite/recovery/archives/ignite   -anon=2,access=ignite:ignite-e1:198.152.232.15

Una vez confirmado que el tenemos el activos los servicios necesarios procedemos a configurar el bootpd que nos permite bootear por red, para eso debemos configurar el file /etc/bootptab de la siguente manera

ignite-defaults:\
        ht=ethernet:\
        hn:\
        bf=/opt/ignite/boot/nbp.efi:\
        bs=48
hptest01:\
        tc=ignite-defaults:\
        bf=/opt/ignite/boot/boot_lif:\
        ha=00306E035925:\
        ip=198.152.232.15:\
        sm=255.255.252.0:\
        gw=198.152.232.1

Ahí configuramos, una entrada por sistema. En este caso nuestro sistema es el hptest01, aquí los parámetros son

tc template defaults,
bf boot file
ha hardware address de la placa de red
ip la ip que nos dan por soe
sm la submask de la red
gw el gateway de la red

Si no tenemos OS y no sabemos la MAC del sistema en cuestión la podemos obtener de la siguiente forma



Booteamos el sistema interrumpimos el booteo






Una vez que interrumpimos el boot escribimos IN de INformation,








A continuación se nos abre un menú de información del sistema en el cual seleccionamos LA de LanAddress










Con esta data podemos llenar todos los campos del /etc/bootptab. Luego reiniciamos el daemon de bootpd con un inetd -c

Ahora estamos en condiciones de bootear por red con el siguiente comando desde la consola del HPUX



bo lan <ip_del_servidor_ignite> INSTALL



Cuando pida de interactuar con el ISL le decimos que no










Ahora veremos un menu en el cual nos pregunta que kernel deseamos cargar en este caso usaremos 11.00










Después de una serie de mensajes no interactivos llegamos a una pantalla de instalación, seleccionamos Install HP-UX








En la pantalla siguiente para mayor comodidad (ya si estamos dentro de una web-console es muy probable que no podamos usar la tecla TAB) seleccionamos "Remote graphical interface running on the Ignite-UX server" y luego le damos OK








La instalación nos preguntara que placa de red queremos usar y seleccionamos la core






Aparecerá un mensaje de DHCP al cual ignoraremos y se nos presentara una pantalla de configuración de red la cual llenaremos con la data que tenemos de la SOE y le decimos que la información de red no es temporaria






Ahora llegamos a la pantalla final de la instalación por consola ya que el resto lo hacemos por la consola grafica que corremos desde ignite












Antes de proseguir con la instalación debemos definir los templates de configuraciones que podemos instalar en el cliente, la data de configuración del mismo se sitúa en /var/opt/ignite/clients ahi tendremos un directorio por MAC de cliente activo.












Las definiciones de las tomas previas de ignite se guardan en el /var/opt/ignite/clients/history. Nuestro objetivo es restaurar una imagen del server ignite en el hptest01

Por lo tanto para obtener las definiciones del sever ignite debemos averiguar su MAC de la siguiente forma.






Una vez en la carpeta correcta debemos copiar el file CINDEX y el directorio recovery al directorio de la nuestro cliente






Para continuar con la instalación grafica hacemos lo siguiente, abrimos una sesión de CMD dentro de nuestro escritorio Citrix cargamos el cliente X Exceed y escribimos ipconfig para obtener la ip de nuestra estación












Una vez con el servidor X cargado y la ip del escritorio cargamos una sesión en ignite ahí exportamos la variable DISPLAY con la ip y el nro de server X correspondiente y ejecutamos ignite






Y en nuestro escritorio de citrix veremos la pantalla de instalación con nuestro cliente listo para instalar










Hacemos click con el segundo botón del ratón en el icono de nuestro sistema seleccionamos Install Client -> New Install










Ahora vemos que dentro de configurations tenemos varios templates, en este caso vamos a seleccionar el último Recovery Archive








Luego, vamos a File System y veremos uno que esta en unused ese es el / así que proseguiremos a definirlo






Luego definimos la password de root






En la Tab de Basic clickeamos en el boton de additional tasks y ponemos en FALSE la opcion de importar los Volume Groups esto es porque ignite tiene otros vgs aparte del vg00 que no existen en hptest01








En la parte de system definimos las rutas








Nota: En caso que necesitemos, por tema de tamaño de discos, agrandar parámetros del vg00 podemos hacerlo el Tab de File System en Advanced Group Parameter










Luego le damos GO! para comenzar la instalación, nos salta un Warning por el espacio en el FS crash y continuamos haciendo click en GO!








Para ver el progreso de nuestra instalación hacemos botón derecho en el icono de nuestro server y hacemos click en Client Status






Luego haremos click en View Logfile






Desde esta ventana podremos monitorear el resto de la instalación






Eventualmente la instalación llegara a un punto donde el sistema necesitara un reboot








El equipo booteara con sus discos de booteo luego continuara corriendo unos scripts de configuración








Y en caso de ser satisfactoria la instalación obtendremos el siguiente mensaje en la consola










EOF.