Páginas: Anterior 1 2 3 4 5 6 7 8 ...39 40 41 Siguiente
Páginas: Anterior 1 2 3 4 5 6 7 8 ...39 40 41 Siguiente

Páginas: Anterior 1 2 3 4 5 6 7 8 ...39 40 41 Siguiente

Automatizar actualizaciones con yum-updatesd y yum-cron en CentOS

23 12 2011
Actualizaciones automáticas

CentOS es una distribución de las consideradas como más estables. Aunque sea bastante estable, no implica que no necesite de actualizaciones con regularidad debido a incidencias críticas en algún paquete de software o bien debido avulnerabilidades.

Para evitar consumir tiempo a los administradores de sistemas comprobando regularmente si se necesita alguna actualización, existen herramientas que se encargan de realizar esta tarea de forma períodica.

Existen dos alternativas en CentOS:

  • yum-updatesd es un demonio notificador de actualizaciones que puedan ser aplicadas al sistema
  • yum-cron es un paquete con los archivos necesarios para hacer que el comando yum update se establezca como un trabajo de cron.

Generalmente yum-updatesd es más recomendable para escritorios y yum-cron para servidores, por este motivo coexisten ambos.

yum-cron es algo más sencillo pero no dispone de muchas opciones de configuración, aunque yum-updatesd es más configurable, pero parece tener algunas fugas y acumulaciones de memoria/CPU cuando se ejecuta durante bastante tiempo en servidores.

Configurando yum-updatesd

Podemos instalarlo con:

1
# yum install yum-updatesd

yum-updatesd dispone de varios métodos de notificación:

  • syslog
  • email
  • dbus

Estas notificaciones se configuran mediante el archivo de configuración /etc/yum/yum-updatesd.conf. Este archivo dispone de una única sección “main” que define todas las opciones de configuración globales. Las opciones disponibles son las siguientes:

  • run_interval Número de segundos a esperar entre comprobaciones de actualizaciones disponibles.
  • updaterefresh Número mínimo de segundos entre para actualizar la información de actualizaciones para evitar acceder al servidor con demasiada frecuencia.
  • emit_via Lista de maneras para emitir una notificación de actualización. Los valores válidos son: ‘email’, ‘dbus’ y ‘syslog’.
  • do_update Opción booleana para decidir si las actualizaciones deberían ser o no aplicadas. Por defecto falso.
  • do_download Opción booleana para decidir si las actualizaciones deberían o no ser descargadas automáticamente. Por defecto falso.
  • do_download_deps Opción booleana para automáticamente descargar las dependencias de paquetes que necesitan actualizarse también. Por defecto falso.

Opciones de notificacion por email

  • email_to Lista de direcciones email para enviar las actualizaciones de notificación. Por defecto ‘root@locahost’.
  • email_from Direcciones de email desde donde enviar las notificaciones de actualización. Por defecto ‘yum-updatesd@localhost’.
  • smtp_server Servidor SMTP para usar en el envío de email, cadena de host o host:puerto. Por defecto ‘localhost:25′.

Opciones de notificacion por Syslog

  • syslog_facility La instalación de syslog que debería ser usada. Por defecto ‘DAEMON’.be used. Defaults to ‘DAEMON’.
  • syslog_level Nivel de los mensajes en syslog. Por defecto ‘WARN’.

Ejemplo de configuración

Un ejemplo de configuración posible para /etc/yum/yum-updatesd.conf donde cada 8 horas comprobamos actualizaciones sin instalarlas, pero descargandolas y notificamos si existe alguna por email puede ser:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[main]
# how often to check for new updates (in seconds)
run_interval = 28800
 
# how often to allow checking on request (in seconds)
updaterefresh = 3600
# how to send notifications (valid: dbus, email, syslog)
emit_via = email
# should we listen via dbus to give out update information/check for
# new updates
dbus_listener = yes
# who to send the email notifications to
email_to = tuemail@tudominio.com
# who send the notifications
email_from = yumupdates@tudominio.com
# automatically install updates
do_update = no
# automatically download updates
do_download = yes
# automatically download deps of updates
do_download_deps = yes

Después de configurar el servicio, lo iniciaremos con:

1
# service yum-updatesd start

Y para que se inicie en cada inicio del servidor:

1
# chkconfig yum-updatesd on

Para desactivar es realizar la operación inversa a yum-updatesd:

1
2
#service yum-updatesd stop
#chkconfig --del yum-updatesd

Nota: Recuerda que una vez desactivado no se notificará ningún tipo de actualización, y debe por tanto realizarse de forma manual.

Configurando yum-cron

yum-cron se habilita como si fuera cualquier otro daemon:
1
2
3
# yum install yum-cron
# yum chkconfig yum-cron on
# service yum-cron start

Esto creara un archivo /etc/cron.daily/0yum.cron que será ejecutado diariamente a la hora programada.

Aunque se trata como daemon, en realidad no lo es, sino que es un script que se ejecuta diariamente y limpia las actualizaciones semanalmente. Es fácil comprobar con chkconfig –list que yum-cron esta en la lista, pero desahabilitado para todos los niveles de ejecución. Puede activarse si se desea con:

1
# chkconfig yum-cron on
Este paso no es necesario ya que cron ejecutara igualmente la tarea programada.
Si es necesario iniciar por primera vez yum-cron para que se cree el archivo en cron-daily con un flag en /var/lock/subsys/yum-cron:
1
# /etc/init.d/yum.cron start

Nota: Es importante recalcar que algunos paquetes como los del kernel requieren de reinicio para aplicar las nuevas actualizaciones y yum-updatesd y yum-cron no implican reiniciar el sistema, por lo que recae esta ultima atencion al administrador del sistema.

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)


Solucionar “stdin: is not a tty”

17 12 2011

 

TTY

TTY

Normalmente se puede encontrar este aviso/error usando scp o sobre otras aplicaciones que utilicen sesiones ssh no interactivas en algún servidor o estación de trabajo.

No suele perjudicar el rendimiento de la aplicación o implicar algún mal funcionamiento, pero puede resultar molesto o generar dudas de si todo esta funcionando correctamente.

El problema se origina cuando por ejemplo scp se ejecuta leyendo el archivo de bash ~/.bashrc y este invoca al bashrc global en /etc/bashrc. El archivo global de bashrc tiene comandos que sólo son aplicables si la sesión es interactiva y puesto que scp se ejecuta sobre una sesión no interactiva esos comandos no se ejecutaran apropiadamente, provocando el error mencionado.

Para solucionarlo, se puede optar por detectar si la sesión es interactiva y no cargar dichos ficheros. Para ello se debe editar justo al principio del archivo ~/.bashrc y añadir las siguientes líneas:

if [ $(expr index "$-" i) -eq 0 ]; then
    return
fi

Estas línea detectan si se trata de una sesión interactiva que contenga “i” $-, y parara de procesar el .bashrc (antes de que el bashrc global se invoque) y no se generen errores.

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)


Extrayendo diagramas UML de código python con PyReverse

24 07 2011

En la mayoría de proyectos Python de gran desarrollo, se hace necesario documentar el desarrollo de una aplicación.

A menudo se utilizan los diagramas UML, para ilustrar diagramas de clases, paquetes, etc.

Pyreverse es una utilidad que analiza el código fuente Python y extrae diagramas de clases y dependencias con paquetes.

En los diagramas generados se muestran:

  • Atributos de clases y si es posible su tipo
  • Métodos de clases
  • Enlaces de herencia entre clases
  • Enlaces de asociación entre clases
  • Representación de excepciones e interfaces

Nota: Esta utilidad ha sido integrada desde 2008 con Pylint a partir de la versión 0.15.

Instalación en Ubuntu 11.04

Puesto que Pyreverse esta integrado en Pylint y este utiliza Graphviz para generar los diagramas nos basta con instalar los siguientes paquetes:

1
sudo apt-get install graphviz pylint

A modo de ejemplo, utilizare el código fuente de Tivion, para generar algunos diagramas UML.

Generaramos con pyreverse, un archivo classes_Tivion.png aplicándolo a la carpeta src de Tivion:

1
pyreverse -o png -p Tivion src/

-o : establece el formato de salida
-p nombre : produce los archivos de salida añadiendo el nombre establecido

Esto generará un diagrama como el siguiente (haz click para agrandar):

Python Classes Tivion

Pero el layout por defecto, es algo espartano y podemos mejorarlo con otras hojas de estilo XML que definamos. Para ello necesitamos cambiar el formato de salida a .dot, para posteriormente generar un archivo SVG.

Generar el .dot

1
pyreverse -o dot -p Tivion src/

Generar el SVG a partir del DOT

1
dot -Tsvg classes_Tivion.dot > classes_Tivion.svg

Aplicar el layout mejorado

Para ello he utilizado el xsl definido aquí:

1
xsltproc notugly.xsl classes_Tivion.svg > classes_Tivion-notugly.svg

Esto mejora un poco, pero habría que editar el .dot para cambiar los estilos de cada “record”. Como prueba, he editado un par de records, cambiándoles el fondo, pero sería necesario automatizarlo, o incluso mucho mejor si pyreverse admitiera un xsl y lo generara ya con otro layout mas moderno.

El resultado es el siguiente (haz click para agrandar):

Python Class Tivion pretty layout

Python Class Tivion pretty layout

Fuentes

Pyreverse : UML Diagrams for Python

Making Graphviz output pretty with xsl

Making Graphviz output pretty with xsl (updated)

VN:F [1.9.13_1145]
Rating: 9.0/10 (1 vote cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)


Páginas: Anterior 1 2 3 4 5 6 7 8 ...39 40 41 Siguiente