Archive for julio 2009

h1

error «Too many open files»

17/07/2009

Si en una aplicación (aMule por ejemplo, o algunas bases de datos como Oracle) se produce este error:

ERROR salvando archivo part: Failed to open part.met file (681.part.met ==> Fotos.tar.gz)
2009-07-16 14:14:05: Error: can't open file '/home/carlos/temporales_amule/489.part.met' (error 24: Too many open files)
2009-07-16 14:14:05: CFile: Error when opening file (/home/carlos/temporales_amule/489.part.met): Too many open files

éste es debido a la apertura simultánea de más descriptores de fichero de los permitidos por el sistema operativo. Se puede ver facilmente con el siguiente comando:

carlos@shirley:~$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

Para ello, o se corrige la aplicación para que no abra tantos ficheros al mismo o se cambia la configuración del sistema operativo para aumentar el límite. En este último caso, en GNU/Linux Kubuntu sería editando el fichero /etc/security/limits.conf

carlos@WhenIGrowUp:~$ sudo nano /etc/security/limits.conf
[sudo] password for carlos:

Añadir al final del fichero las siguientes lineas:

[...]
carlos soft nofile 30000
carlos hard nofile 30000

[...]

Sustituyendo logicamente «carlos» por el nombre del usuario que ejecuta la aplicación. Puede ser necesario reiniciar la sesión de ese usuario. Para comprobar que el cambio se ha aplicado correctamente, ejecutar el comando ulimit de nuevo:

carlos@shirley:~$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 30000
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

h1

Error librerías en K/Ubuntu AMD64 – getlibs y planner

17/07/2009

Trabajando desde una plataforma de 64bits es habitual que algunas librerías no hayan sido portadas a esta arquitectura, produciendo errores similares al siguiente:

carlos@WhenIGrowUp:~$ planner
planner: error while loading shared libraries: libgailutil.so.18: cannot open shared object file: No such file or directory

Para ello existe una utilidad, que aun no está en los repositorios de Ubuntu ó Debian, llamada GetLibs. Con ella se pueden obtener las librerías necesarias para una aplicación que no funcione debido a este problema.

Descarga e instalación
carlos@WhenIGrowUp:~$ wget http://www.boundlesssupremacy.com/Cappy/getlibs/getlibs-all.deb
carlos@WhenIGrowUp:~$ sudo dpkg -i getlibs-all.deb

Solución:
carlos@WhenIGrowUp:~$ getlibs /usr/bin/planner
libgailutil.so.18: libgail18
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS:
libgail18
0 actualizados, 1 se instalarán, 0 para eliminar y 32 no actualizados.
Necesito descargar 30,3kB de archivos.
Se utilizarán 1368kB de espacio de disco adicional después de desempaquetar.
Des:1 http://archive.ubuntu.com hardy/main libgail18 1.22.1-0ubuntu1 [30,3kB]
Descargados 30,3kB en 0s (101kB/s)
Seleccionando el paquete libgail18 previamente no seleccionado.
(Leyendo la base de datos ...
147395 ficheros y directorios instalados actualmente.)
Desempaquetando libgail18 (de .../libgail18_1.22.1-0ubuntu1_amd64.deb) ...
Configurando libgail18 (1.22.1-0ubuntu1) ...
Processing triggers for libc6 ...
ldconfig deferred processing now taking place

carlos@WhenIGrowUp:~$ planner

h1

email con asunto «Hacker Attack!!!»

17/07/2009

Si se recibe un correo similar al siguiente:

de    test <cgacimartin@midominio.es>
para    cgacimartin@midominio.es
fecha    15 de julio de 2009 02:25
asunto   Hacker Attack!!!

y no se deduce de donde proviene, tras chequear las cabeceras del propio correo se puede intuir la sede desde donde se envía, pero además es conveniente considerar que sea proveniente de un router Linksys AG241V2, el cual alerta de un escaneo de la IP pública o intento agresivo de obtener información sobre el mismo.

Para desactivarlo es necesario entrar en la página de administración del router, Administrations > Reporting y cambiar el umbral o threshold a 80, o directamente desactivar el envío de alertas.

email.hacker.atack

h1

Howto monit temperature with Monit/Mmonit (Cómo monitorizar temperatura con Monit/Mmonit)

04/07/2009

In this article i will develop a plugin for mmonit for monitoring the CPU temperature and send alerts (emails) if it detects problems. Althought it seems to have a lot of steps, in 3 minutes you can get it up and running:

1º) Install the Linux package temperature.
After this, running «sensors» will show the temperature:

carlos@WhenIGrowUp:~$ sensors
k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp: -49.0°C
Core1 Temp: +56.0°C
M/B Temp: +55.0°C (low = -1.0°C, high = +127.0°C) sensor = thermistor
CPU Temp: +45.0°C (low = -1.0°C, high = +127.0°C) sensor = thermistor
Temp3: -128.0°C (low = -1.0°C, high = +127.0°C) sensor = disabled

2º) Download, check and install this script in your crontab.
This script will check the temperature, write it in the file /tmp/tempFile and, as Monit can’t read content of files, set the permissions as the following:

if temp is OK, /tmp/tempFile permissions will be 700
if it is a warning temp, /tmp/tempFile permissions will be 710
If it is a danger temp, /tmp/tempFile permissions will be 712

Later, Monit will check the permissions of this file, so it will know if the system is in trouble.

Run the script to test it:
carlos@shirley:~/hardware$ ./monit.temperature.sh
Temperature is: 45
Temp OK

Throubleshooting: if you get no result,
carlos@shirley:~/hardware$ ./monit.temperature.sh
Temperature is:
Temp OK
edit the script and change CPU with the name of the line with the info (delete «temp3» and write «CPU» i.e) where you can see the temperature runnning «sensors»:
carlos@shirley:~/hardware$ nano monit.temperature.sh
temp=$(sensors | grep temp3) <-- Replace temp3 with CPU or a string of the output "sensors".

Now, install it in your crontab to be executed every minute:
# crontab -e
* * * * * /home/carlos/monit.temperature.sh

3º) Install and run Monit (not Mmonit, his commercial brother). Monit is GNU. Here you can see a quick guide.
Monit is an utility for monitoring systems (HD, processes, resources, connectivity, networks…), sending alerts and taking actions . Install it:

# sudo apt-get install monit
(or download last version here)

4º) Add these lines to /etc/monit/monitrc
# sudo nano /etc/monit/monitrc
[...]
check file TemperatureOK with path /tmp/tempFile
if failed permission 700 then alert
check file warningTemperature with path /tmp/tempFile
if failed permission 710 then alert
check file dangerTemperature with path /tmp/tempFile
if failed permission 712 then alert
[...]

for checking the correct syntax of Monit’s control file, run:
# sudo monit -tc /etc/monit/monitrc
Control file syntax OK

And restart it
# sudo /etc/init.d/monit restart

5º) Check Monit’s web interface, you will get something like this:
http://172.26.0.1:2812 (default: admin // monit)
monit.temperature.example

h1

Como reiniciar Comtrend con firmware Poligon desde consola en GNU/Linux

01/07/2009

Para reiniciar este router con firmware Poligon desde consola es necesario Curl:

carlos@WhenIGrowUp:~$ sudo apt-get install curl
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS:
curl
0 actualizados, 1 se instalarán, 0 para eliminar y 2 no actualizados.
Se necesita descargar 0B/198kB de archivos.
Se utilizarán 315kB de espacio de disco adicional después de desempaquetar.
Seleccionando el paquete curl previamente no seleccionado.
(Leyendo la base de datos ...
145189 ficheros y directorios instalados actualmente.)
Desempaquetando curl (de .../curl_7.18.0-1ubuntu2.1_amd64.deb) ...
Configurando curl (7.18.0-1ubuntu2.1) ...

y ejecutar la siguiente línea con los parámetros (usuario, clave e IP adaptados al router propio):

carlos@WhenIGrowUp:~$ curl -u admin:1234 http://172.26.0.1/rebootinfo.cgi
[...]
Reiniciando el Router
El Router ha sido configurado y se esta reiniciando.
Cierre la ventana de configuracion y espere 60 segundos antes de abrirla nuevamente. Si es necesario reconfigure la direccion IP de su tarjeta de red para que coincida con su nueva configuracion.
[...]

Posteriormente, si se desea programar un reinicio periódico, se puede incluir esta línea en el cron de cualquier equipo con GNU/Linux y curl que esté conectado al router.