RCHE: Preparando la máquina para el examen !

Comenzamos la cuenta atrás para el examen de RHCE. El primer paso, instalar la máquina con RedHat Enterprise 5.4.

Tras la instalación totalmente por defecto me encuentro que por defecto se instala el escritorio completo de gnome en el servidor ( cosa que no me gusta nada ) y que aunque me detecta mi tarjeta wifi Atheros, el servicio wpa_supplicant no levanta ( ni con el modulo wext ni con madwifi ).
Como bien nos han enseñado mil veces en curso… vamos a pedir soporte. Para ello usamos el codigo de activacion de la caja de software que tenemos con licencia educacional.
Nuevo problema: la licencia educacional no incluye soporte, con lo que no tengo acceso a abrir tickets ni a consultar el kb de redhat ( aunque supuestamete era abierto para todo el público ). Así que… a tirar de cable.

Para tener el entorno lo mas similar posible pero desde mi portatil voy a usar vnc para conectarme con el escritorio remoto. El servicio de vncserver viene por defecto instalado, así que solo hace falta en el pc cliente o levantar un tunel con X y ejectuarlo en el propio servidor. Los pasos son los siguientes:

  • logearse como un usuario normal, por ejemplo ‘student’
  • ejecutar vncpassword y asignar una password. Sólo será para la conexion por vnc, no es la misma que la del sistema
  • escalar privilegios de root o acceder con privilegios a /etc/sysconfig/vncservers
  • Agregar esta entrada:
    [shell]VNCSERVERS=”1:student”
    VNCSERVERARGS[1]=”-geometry 800×600 “[/shell]
  • iniciar el servicio ‘ service vncserver start ‘
  • verificar que los puertos no están siendo bloqueados por el firewall o bien agregar la entrada de iptables :
    iptables -I INPUT -p tcp –dport 5901 -j ACCEPT
  • El puerto 5091 es el típico de vnc si sólo hay una sesion. Verificar desde el cliente con telnet. Tiene que aparecer un mensaje como este:
    [shell]Escape character is ‘^]’.
    RFB 003.008[/shell]
  • y ahora a conectar desde el cliente con vncviewer host_remoto:5901

Si queremos arrancar gnome podemos tocar el fichero /home/student/.vnc/xstartup y meter gnome-session de esta forma:
[shell]#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
gnome-session &[/shell]
Por último y para poder usar xen….
[shell]yum groupinstall virtualization
o
yum groupinstall xen[/shell]
Recordad que se puede hacer más cool si dejamos en /etc/sysconfig/kernel con la variable DEFAULTKERNEL=kernel-xen y al instalar dejará por defecto el kernel xen.

Otra cosa más, por defecto no aparece la parte de virtualización activada en nuestro repositorio. Se puede activar desde las suscripciones de Red Hat Network. Desde el servidor tamien lanzar un rhn_check para verificar que la conexión con Red Hat Network es correcta :
[shell]# rhn_check
Loaded plugins: rhnplugin[/shell]
Bueno, sólo con la preparación se tocan varios puntos para el examen como podrian ser:

– instalación de paquetes : yum groupinstall , yum grouplist …
– registro de la máquina en redhat: rhn_register, rhn_check
– instalacion de kernel por defecto: /etc/sysconfig/kernel, verificar el kernel en ejecucion con uname -r
– creacion de usuario, cambio de password
– no lo he puesto en el artículo pero lo suyo sería crearse una llave ssh para conectar como usuario student usando prácticas seguras, ssh-keygen, ssh-copy-id, ssh-add
– agregar la linea de sudo para lanzar comandos con privilegios desde el usuario student , con visudo, agregar al final: student ALL=(ALL) NOPASSWD: ALL
– Configurar vnc, que no creo que entre en el temario
– Agregar reglas de iptables para permitir el acceso al servicio vnc: [shell] iptables -I INPUT -p tcp –dport 5901 -j ACCEPT [/shell] y una vez testeado , [shell]service iptables save[/shell]

chatarra tecnológica: todo a un euro

Vendo/cambio/regalo esta chatarra que tengo por casa…. A un euro o cambio por libros, peliculas, etc… me da igual, el euro es simbólico y parte se donará fines benéficos.
Contactar en jorge@senin.org

  • raton puerto serie 3 botones
  • raton puerto ps2 4 botones 2 ruedas
  • raton puerto serie 3 botones
  • disco duro ide maxtor 4GB – 82160d2
  • disco duro ide maxtor 40 gb – D540x-4k
  • disco duro ide hp 15 gb – Dtla-307015
  • modem puerto serie conceptronic 56k – Con56er2-1
  • lectora dvd ltd-166s
  • lectora dvd dvd-116
  • lectora xbox philips vad6011
  • lectora cdrom acer m-f45lh
  • tarjeta de red 3com – Fast ethernet xl pci 10/100 3c905b-tx rev.a
  • tarjeat pci adaptec – Ava-292e/I ( Puerto scsi )
  • tarjeta pci dlink – Dfe-538tx – 10/100
  • tarjeta eisa – Adaptador de red 10 mbs – AT/Lantic DP83905AVQB,
  • tarjeta gráfica isa – Ati mach 8
  • tarjeta de red isa- Bnc/ Ethernet – Trendnet te-16xp/ct rev. A1
  • tarjeta pci – Creative labs es1371
  • disipadores para microprocesadores socket y p2
  • joystick puerto serie – Pointmaster
  • joystick aviacion – Game port – Quicksort –
  • coleccion de cds de la revista pc actual – Años 95, 96 , 97
  • cd de evaluacion – Suse – 6.5 y suse 7.0
  • modem adsl usb – 3com – 3cp4218
  • pc card – Smc2635 – Wireless 802.11b
  • 3com – Adsl 11g- Router wireless – 4 puertos – 3cradsl72
  • placa base iwill -xa100 plus
  • teclado inalambrico infrarojos ( Quierotv ) – Sagem swk-8695wt
  • software antiguo, Discos de 5 1/4, Discos 3 1/2….
  • impresora hp deskjet 500c

[plesk] ERROR: WDExc fallo en pack-sysstats

Aunque debería estar corregido ya en todas las instalaciones puede que alguno os encontreis con alguna versión de Plesk 9.5.x o 10.x con este error que se genera en el fichero :

/opt/psa/libexec/modules/watchdog/cp/pack-sysstats 

La consula sql no está bien formada y falla al ejecutar, concretamente el error es este :

ERROR: WDExc
Error occurred while processing database query: 'MySQL query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group by service_id, type, round(unix_timestamp(time) / 200, 0) having count(val' at line 3'
0: wdlib.php:1088
       wd__db_query(string 'select service_id, type, unix_timestamp(min(time)) as min_time, unix_timestamp(max(time)) as max_time, avg(value) as avg
                                       from module_watchdog_sys_stat where
                                       group by service_id, type, round(unix_timestamp(time) / 200, 0) having count(value) > 1 limit 10000;')
1: pack-sysstats:63
       pack_statistics(integer '200', boolean  false, boolean  false)
2: pack-sysstats:44

Existe un microupdate de corrige el problema, para aplicarlo, directamente ejecutamos el autoupdate de plesk de la siguiente forma :

/usr/local/psa/admin/sbin/autoinstaller --select-release-current --install-component base

Artículo de kb de Parallels: http://kb.parallels.com/en/9554 Cron job failure on watchdog jobs

RH-133 – 1 Administrative Access (II)

Xorg

El entorno gráfico del que disponemos en Red Hat se basa en X Window System. X Window System compone tanto cliente como servidor de protocolo X. El protocolo X se desarrolló para poder gestionar interfaces gráficos usando una arquitectura cliente-servidor. Esta comunicación cliente-servidor se realizar mendiante el Xprotocol que se implementa en las liberías Xlib.

Actualmente se usa Xorg que es una implementacion basada en la version del protocolo X11R7.4. Anteriormente se usaba XFree86, pero cambió su licencia a una licencia más cerrada y se creó el fork X.org que se usa actualmente.

Es importante conocer que X.org no es un gestor de ventanas sino una implementación de un protocolo de comunicaciones gráficas. Debemos tener un gestor de vetanas como gnome, kde, openbox, lxde, windows-el, fluxbox, *twm (twm, ctwm, vtwm), tritium, metacity y uno de los más famosos: Window Maker ( gracias Dasmandr ) ,etc.. que interprete estos datos y ‘dibujar‘ las ventanas. Además normalmente se instala XFS que es un servidor de Fuentes de caracteres True Type, aunque no es imprescindible, se suele instalar.

En Red Hat, disponemos de la herramienta system-config-display para configurar las X

Si arrancamos en runlevel 5, El inicia prefdm en /dev/tty7 ( indicado en /etc/inittab ). Este comando busca en /etc/sysconfig/desktop la variable DESKTOP para determinar si debe lanzar Gnome o KDE. También lo usa startx. Esta configuración se puede obviar si existe un fichero ~/.desktop.

SSH
Existe una forma de acceder remotamente al servidor y de forma segura: usando ssh.
Es una herramienta muy versatil que se comunica usando un sistema bastante seguro de cifrado.

A tener en cuenta:

  • Se pueden hacer túneles remotos: Conectar un puerto local a uno remoto de otra máquina con ssh – L 8080:remote-web-server:80 user@ssh-server. Puerto local 8080 al 80 de otra máquina llamada remote-web-server usando la máquina ssh-server como extremo del tunel.
  • Generar llaves para no tener que meter contraseña. Se recomienda encarecidamente usar una password que proteja el fichero de claves para que nadie haga un uso malintencionado de él. Generamos las claves  con ssh-genkey -t rsa. Nos quedamos con la id_rsa y la id_rsa.pub la subimos al sitio remoto donde queremos acceder, será la clave pública. Podemos automatizar la copia con ssh-copy-id -i ~/.ssh/id_rsa.pub user@host
  • Para usar la clave privada sin tener que estar siempre metiendo el password, usarmos ssh-agent. Mientras dure nuestra sesión no volverá a pedirnos el password.
  • Podemos redirigir la salida gráfica de otra máquina a la nuestra con ssh -X. Si falla revisar la variable DISPLAY ( DISPLAY=:0.0 )

Multiplexando y compartiendo sesiones:

Existe la herramienta screen que nos permite tener múltiples terminales dentro de una misma sesión y además compartir la terminal con otro usuario. Además, se mantiene en ejecución en el servidor con lo que un corte local no interrumpiría la ejecución en remoto.

RH-133 – 1 Administrative Access

Me ha costado encontrar y sintetizar documentación acerca de las terminales, pero creo que ha merecido la pena. En una máquina Unix/Linux siempre se habla de las terminales y las consolas pero vamos a ver qué son y qué tipos hay. En nuestro manual RH-133 se no clasifica las terminales en :

  • Physical Console ( Consolas Físicas ) : /dev/tty0 o /dev/fb0 ( si usamos framebuffer )
  • Virtual Console ( Consola Virtual ) : /dev/tty1 .. /dev/ttyN ( ctrl + alt + fN o /usr/bin/chvt para cambiar de terminal )
  • Serial Console ( Consola Serie ) : /dev/ttyS0 ..  /dev/ttySN ( Xen /dev/xvc0 )
  • System Console ( Consola del sistema ) : /dev/console mapeada por el kernel a /dev/tty0 o /dev/fb0
  • Pseudoterminal o pty ( /dev/pts/N ).

Resumiendo mucho la historia, hay que saber que TTY significa TeleTYpe. Antes de la llegada de las computadoras, se usaban teletipos para comunicar datos a larga distancia. Cuando llegaron los computadores se usaron los teletipos ( TTY ) para interactuar con las computadoras. Dado que llevaban tiempo en el mercado y estaban disponibles, se comenzaron a usar sin necesidad de diseñar nada especifico para la entrada y salida de datos. Este terminal se llamo en los sistemas Unix/Linux Physical Console ( /dev/tty0 ). Con los teletipos se mandaban comandos al computador y este envíaba la respuesta que imprimía en papel. El uso de estos teletipos hace comprender la existencia de funciones y teclas que se mantienen sin ser muy útiles hoy en día. Por ejemplo fijaos en este teclado, con la tecla de ‘ line feed ‘ a la derecha

Bien, para ampliar el posible uso del computador, se comenzaron a enchufar terminales como los famosos VT-100 mediante puertos serie, lo que llamamos en el manual Serial Console ( /dev/ttyS0 ). Usando puertos serie podían tener otros terminales conectados al mismo computador, con lo que posibilitaba que hubiera más gente trabajando en la máquina.

Todos estos conceptos o la gran mayoría se han conservado en cierta medida, pero el hardware ha evolucionado. Ahora llamamos Physical Console ( /dev/tty0 ) al teclado, monitor y ratón. Si nos logeamos en un equipo, tendremos o /dev/tty1 que es una consola virtual. Pues bien, lo que se hace es enlazar el /dev/tty0 con la consola actual y así podemos recibir los mensajes del sistema.

La diferencia de las consolas virtuales es que no están conectadas a ningún conector, la consola física o la serie, están conectadas físicamente a la máquina pero las demás no. Cada ventana con un xterm o un ssh a una máquina nos da una consola virtual que no está fisicamente conectada a nada, ni tiene IRQ ni IO Address.

Además, tenemos /dev/console que el kernel mapea a /dev/tty0 por defecto pero se puede mapear a otro dispositivo usando el parámetro del kernel console=ttys0 . Se usa /dev/console para unificar en envío de mensajes de sistema, mensajes de arranque, el login, etc…  Por ejemplo el demonio init envía los mensajes del arranque a /dev/console y como está enlazado a /dev/ttyS0 vemos como arranca la máquina.

Para acabar las pseudoterminales o pts, son las referidas a terminales emuladas como xterm, gnome-terminal, etc.. son emulaciones de terminales serie como el vt-100.

Todo este concepto de las terminales es importante para comprender por qué existen los señales, procesos en background, foreground, etc…

Lecturas obligadas:
http://www.linusakesson.net/programming/tty/index.php
http://www.educ.umu.se/~bjorn/linux/howto/Text-Terminal-HOWTO-9.html

Referencias:
http://www.faqs.org/docs/Linux-HOWTO/Remote-Serial-Console-HOWTO.html
http://www.vanemery.com/Linux/Serial/serial-console.html

Use of uninitialized value in numeric ge (>=) at /usr/sbin/syslogd-listfiles line 129.

Revisando los logs del sistema me he encontrado con este error de cron.daily :

[shell]
/etc/cron.daily/sysklogd:
Use of uninitialized value in numeric ge (>=) at /usr/sbin/syslogd-listfiles line 129.
[/shell]

Es debido a que tenía indicado ficheros en /etc/syslog.conf que no existían.
Puedes echar un vistazo rápido a los ficheros con

[shell]
/usr/sbin/syslogd-listfiles -a
[/shell]

y sin hacer mucho esfuerzo, localizar los que no existen :
[shell]
for file in $( /usr/sbin/syslogd-listfiles -a ) ; do if [ ! -e $file ] ; then echo “warning: $file NOT EXISTS!”; fi ; done ;
[/shell]