Friday, October 31, 2008

Configuración Kernels paquetizados por Ubuntu

Recientemente me han planteado si el kernel que se ejecutaba en un equipo reconocería 32Gb de RAM. Me sonaba, que si una opción del kernel estaba activada al compilarlo, entonces la configuración del kernel en ejecución se encontraba en :


/proc/config


En los kernels paquetizados de Ubuntu no lo he encontrado allí, pero cotilleando encontré que para cada kernel instalado, hay en el /boot un ficherito config- donde salen las opciones de compilación.
toto@pitu:~/Documents/nagios$ ls /boot/
abi-2.6.22-15-generic
abi-2.6.24-21-generic
config-2.6.22-15-generic
config-2.6.24-21-generic
grub
initrd.img-2.6.22-15-generic
initrd.img-2.6.22-15-generic.bak
initrd.img-2.6.24-21-generic
initrd.img-2.6.24-21-generic.bak
memtest86+.bin
System.map-2.6.22-15-generic
System.map-2.6.24-21-generic
vmlinuz-2.6.22-15-generic
vmlinuz-2.6.24-21-generic
toto@pitu:~/Documents/nagios$



Su contenido tiene un aspecto parecido a este:

...
CONFIG_HID=m
# CONFIG_HID_DEBUG is not set
# CONFIG_HID_FF is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_HIPPI=y
...


Aquí puede verse como para mi kernel de la versión desktop puede reconocer hasta 4Gb de RAM. En equipos con UBUNTU SERVER, viene activada por defecto la opción de hasta 64Gb.

Es curioso, porque recuerdo haber leído que esta opción tiene (o tenía) una incidencia muy negativa sobre el rendimiento a no ser que realmente haya mucha RAM en la máquina.

Monday, October 27, 2008

Nagios: servicios para hostgroups

Lo que viene a continuación no lo he probado todavía, pero según la documentación de Nagios2 debe funcionar. Se trata de ahorrar trabajo rutinario. Si para cada equipo windows, linux, sun ó aix se monitorizan un pool de servicios iguales, se pueden crear hostgroups por S.O. y definir servicios a aplicar a cada hostgroup.

Para cada equipo que añadamos p.e. al grupo Windows, se monitorizarán automáticamente determinados servicios.

El único problema es hacer que los mails de las alarmas lleguen a los admins de cada máquina:

 define service{
hostgroup_name hostgroup_Windows
service_description basic_services
check_command check_nrpe_parm!check_more_procs!"syslog*,twagent,nsrexec*"
}


Mi duda es si las notificaciones llegarán al contact_group por defecto de cada equipo o si simplemente dará un error.

Cuando lo pruebe lo posteo ;)

Thursday, October 23, 2008

Nagios: caducar los acknoledge con REMOVE_SVC_ACKNOWLEDGEMENT

Después de un tiempo intentando encontrar una manera de caducar los Acknoledge que hace la gente de monitorización de las alarmas en nagios, la otra noche me encontré con una solución de la mano de la propia documentación de nagios:

REMOVE_SVC_ACKNOWLEDGEMENT

Se trata de un comando externo, y según comentan los señores nagios en este link: http://www.nagios.org/developerinfo/externalcommands/commandinfo.php?command_id=117

Una muestra del código puede ser:
now=`date +%s`
commandfile='/usr/local/nagios/var/rw/nagios.cmd'

/bin/printf "[%lu] REMOVE_SVC_ACKNOWLEDGEMENT;host1;service1\n" $now > $commandfile



Si no recuerdo mal, tengo algún script en python para parsear el services.cfg y extraer los pares host-service_name necesarios para caducar todos los acknoledge.

A ver si todavía sigo aquí para cuando tenga mi flamante código python y lo puedo postear.

Buenas noches mundo.

El registro de Windows: internacionalización

Hoy he aprendido algo sobre el registro del windows que desconocía: la forma de ajustar la internacionalización desde el registro.

La estrella invitada es:
HKEY_CURRENT_USER\Control Panel\International

donde hay valores: REG_SZ

Aunque parezca inútil, si quieres hacer algún cambio por script, es muy cómodo conocer qué clave controla qué aspecto. También se puede hacer esto mismo por políticas, pero eso queda para otro día.

a continuación posteo todos los valores:

iCountry Country code is the international telephone code, except for Canada, which is 2. The default is 1.

iCurrDigits Number digits displayed after the decimal separator. The default is 2.

iCurrency Determines how currency is displayed:

ValueMeaning
0$2
12$
2$ 2
32 $

iDate Determines how dates are displayed:

ValueMeaning
0mm/dd/yy
1dd/mm/yy
2yy/mm/dd

iDigits The number of digits displayed after the decimal separator in numbers. The default is 2.

iLZero Leading zeros are not displayed if 0 (default). A Leading zero is displayed if set to 1.

iMeasure Metric is 0, U.S. is 1

iNegCurr Determines the format for displaying negative numbers (default is 1):

ValueMeaning
0($100.00)
1-$100.00
2$-100.00
3$100.00-
4(100.00$)
5-100.00$
6100.00-$
7100.00$-
8-100.00$
9-$ 100.00
10100.00 $-
11$ 100.00-
12$ -100.00
13100.00- $
14($100.00)
15(100.00 $)

iTime Determines if the clock is 12 hours (0) or 24-hour (1).

iTLZero The default of 0 means hours may have single digits, a 1 pads to double digits.

Locale locale ID for spoken language. The default is U.S. English which is 00000409.

s1159 AM indicator for a 12 hour clock.

s2359 PM indicator for a 12 hour clock.

sCountry Country name. The default for U.S. English is United States.

sCurrency Currency symbol. The default for U.S. English is $.

sDate Date separator. The default for U.S. English is /.

sDecimal Decimal separator symbol. The default for U.S. English is the . (period).

sLanguage Language abbreviation: (U.S. English is ENU)

Value Meaning
CSY Czech
DAN Danish
DEA German (Austrian)
DES German (Swiss)
DEU German
ELL Greek
ENA English (Australia)
ENC English (Canada)
ENG English (U.K.)
ENI English (Irish)
ENU English (U.S.)
ENZ English (New Zealand)
ESM Spanish (Mexican)
ESN Modern Spanish
ESP Castilian Spanish
ETI Estonian
FIN Finnish
FRA French
FRB French (Belgian)
FRC French (Canadian)
FRS French (Swiss)
HUN Hungarian
ISL Icelandic
ITA Italian
ITS Italian (Swiss)
NLB Dutch (Belgian)
NLD Dutch
NON Norwegian (Nynorsk)
NOR Norwegian (Bokmal)
PLK Polish
PTB Portuguese (Brazilian)
PTG Portuguese
RUS Russian
SKY Slovak
SVC Swedish
SVE Swedish
TRK Turkish

sList List separator character. The default for U.S. English is , (comma).

sLongDate Long Date format:

ValueMeaning
dddd, MMMM dd, yyyyWednesday, November 19, 1997
MMMM dd, yyyyNovember 19, 1997
dddd, dd MMMM, yyyyWednesday, 19 November , 1997
dd MMMM, yyyy19 November , 1997

sShortDate Short date:

ValueMeaning
MM/dd/yy03/08/99
M/d/yy3/8/99
M/d/yyyy3/8/1999
MM/dd/yyyyy03/08/1999
yy/MM/dd99/03/08
dd-MM-yy08-Mar-99

sThousand Thousands separator. The default for U.S. English is , (comma).

sTime Time separator. The default for U.S. English is : (colon).

sTimeFormat The default is HH:mm:ss


Tuesday, October 21, 2008

dos2unix | sed | awk > salida.txt

Se trata de parsear el visor de sucesos de un Windows para buscar un tipo de ocurrencia o suceso.

Para los impacientes, seré breve:
Ir al visor de sucesos (event viewer), clic dcho en security, guardar como, elegir texto tabulado (tab). En nuestro caso, el fichero se llama jl2.txt. Copiarlo a tu máquina con tu flamante linux y a continuación ejecutar:

dos2unix -b jl2.txt
sed 's/\t/;/g' jl2.txt | awk '$1 ~ /^"$/{printf "\n\n"} $1 !~ /^"$/{printf "%s",$0}' > log_G_repo.txt


y ya tienes todo el registro con una línea por entrada, y podeis empezar con los grep, egrep, ... que os vengan en gana.


La historia completa:


A raiz de un incidente de seguridad, me tocó repasar el event viewer del W2003 del repositorio de ficheros. Seguro que hay otras formas de hacerlo, pero un gran técnico (y un gran jefe, dicho sea de paso) me dió todo un recital de shell scripting tradicional-flauvored.

Así que aunque puede que no conduzca a ninguna parte, allí va. En algunas carpetas delicadas del repositorio alguna usuaria había detectado de cuando en cuando que faltaban contenidos que recuperábamos del backup (con un poco de suerte no había que mandar traer la cinta, ...). Por esto hace un año auditamos los accesos, cambios, ... de todo el contenido de esas carpetas. Esto genera un registro de seguridad gigante, unos 500Mb por semana. A veces hay más de 20 entradas por segundo.

Para parsear todo ese meollo, y llegar a los registros que nos interesan pensamos en exportar el registro de seguridad (Event Viewer - Security), pero la información que proporciona es menor que la del visor de eventos, y la necesitábamos toda.

Finalmente, nos acordamos que si en lugar de exportar haces un guardar como entonces sí que obtienes toda la información que ves desde el visor de sucesos. Puedes sacarlos como texto tabulado, o como csv. Este último formato no es fiable al pasarlo a una hoja de cálculo, ya que encontramos divergencias importantes. Así que nos quedamos con el tabulado.
Pero al guardarlo así, no muestra un registro por línea, y nuestro grep no es muy útil. Además los registros no tienen todos el mismo formato. Por eso buscamos una forma de meterlo cada evento en 1 línea (larga, pero eso no importa), y así luego hacer grep sobre el fichero y extraerlo los DELETE sobre el path deseado.

Monday, October 20, 2008

The WATCH

Hay dias de pena en que aprendemos algo que hace que ese día sea un poquito mejor. Y eso ha sido una pequeña instrucción *nix (linux en mi caso), que realmente me ha gustado.

Prueba a procesar a base de awk, grep, ... un fichero de 400Mb de txt ... En seguida andas desde otro terminal haciendo:

ls -lh <mi_ficherito_de_4TB.txt>

para ver como va creciendo el ficherito. Pues ahora podemos hacerlo así:

watch -n 1 ls -lh <mi_ficherito_de_4TB.txt>


y cada segundo que pasa nos va enseñando la salida de ls -lh , actualizando el tamaño del fichero.


y con esto y un bizcocho ...

y finalmente empezé

Muchas veces me he dicho, si tuviese un blog esto lo recogería. Finalmente me he decidido, como son las tantas no voy a decir de dónde sale el nombre, pero al tiempo ... porque la instrucción que da nombre a este blog tiene narices.

Así copié un DVD de mi hija, para salvar el original de sus zarpas y dejar que practique con la copia el mete-saca, para-arranca.

Uso Ubuntu Hardy, con los repositorios estándar de Ubuntu. He instalado el k9copy pero fallaba al hacer la copia. Faltaba dos paquetes: libdvdcss libdvdcss2 que están disponibles en el repositorio de medibuntu. Aquí hay un link fantástico sobre cómo hacerlo:

http://www.zaphu.com/2008/05/31/ubuntu-guide-ripping-and-burning-dvds-with-k9copy-and-brasero/


Un comentario sobre el link que hace a la instalación de los paquetes desde medibuntu (http://www.zaphu.com/2008/05/30/ubuntu-guide-installing-media-codecs-for-flash-dvd-quicktime-mov-mp3-wmv-wma-and-acc-mp4-m4a-playback/):

si substituyes aptitude install libdvdcss libdvdcss2
por : apt-get install libdvdcss libdvdcss2

revienta vivo. La verdad que como soy un ignorante del aptitude, pues no sé si es normal o no.
Por ahora sólo lo señalo.

Buenas noches yo.