gentoo linux, java, software libre y otras hierbas
Oct, 02 2009 - 6:00 pm

Obtener información del sistema [memoria disponible, %CPU, espacio en disco] en Java

En esta guía aprenderemos a obtener información de los recursos sistema en Java, usando la librería Sigar. Los datos que podremos extraer son los siguientes:

  • Información de la CPU.
  • Espacio en disco disponible.
  • Cantidad de espacio que consume un directorio en específico.
  • Cantidad de memoria RAM disponible y en uso.
  • Información de red (dirección IP, nombre de la NIC, puertos abiertos, tablas de enrutamiento, etc.)
  • Información de los procesos que se están ejecutando en el sistema.
  • Asignación de variables de entorno.
  • Uptime, o cantidad de tiempo que el equipo ha estado encendido.
  • Nombre y versión del sistema operativo.
  • Usuarios logueados actualmente.

Resaltadas en negrita está la información en la que nos concentraremos en el ejemplo. Pero antes aclaremos un poco que es Sigar: el API de Sigar nos proporciona una serie de métodos que nos permiten obtener información del sistema operativo; consta de una librería de Java (.jar) y otras librerías nativas específicas para cada sistema operativo soportado (libsigar-amd64-linux.so, para Linux de 64 bits o sigar-x86-winnt.dll para Windows de 32 bits, por poner un ejemplo).

Teniendo esto en cuenta, para hacer funcionar dicha API en una de nuestras aplicaciones, bastaría con tener el archivo .jar y la librería específica de nuestro sistema operativo. En el desarrollo del ejemplo se usará Eclipse y, aunque se explicará cómo añadir las librerías en el proyecto, se da por conocido el funcionamiento del flag --classpath de los comandos javac y java (obligatorio si no se usa ningún IDE).

El resultado…

Siempre pongo primero el resultado ya que nos aclara la visión de hacia donde vamos, y de paso saber si lo que está aquí es lo que buscamos. Esta es la salida del programa en mi Gentoo Linux:

Leer el resto de la entrada…

15 Comentarios | deja el tuyo

Sep, 24 2009 - 9:46 am

Obtener información del sistema con Python

Puesto que estaré haciendo un proyecto en Python, iré colocando aquellos tips útiles que he aprendido usando este maravilloso lenguaje de programación. En este caso, se trata de obtener la información del sistema que ejecuta el script; cosas como el PID del script, el directorio donde se está ejecutando, el nombre y versión del sistema operativo, etc.:

#!/usr/bin/python

import os
import time

numUsuario = os.getuid()
pidProceso = os.getpid()
donde = os.getcwd()
sistemaOperativo = os.uname()
tiempos = os.times()
horaRaw = time.time()
horaFormato = time.ctime(horaRaw)

print "Numero de usuario",numUsuario
print "PID",pidProceso
print "Directorio actual",donde
print "Informacion del sistema",sistemaOperativo
print "Informacion de tiempos del sistema",tiempos

print "\nLa hora/fecha actual es",horaRaw
print "Lo cual significa",horaFormato

Información extra: http://docs.python.org/library/os.html

4 Comentarios | deja el tuyo

Nov, 10 2008 - 10:49 am

Sistema de vigilancia básico sobre Linux

Este es un tip bastante sencillo con el que he logrado configurar un sistema de vigilancia básico, el cual usando una cámara detectará el movimiento. Y digo bastante sencillo porque no es necesario tener muchos conocimientos, puesto que todo lo hace un programa llamado motion.

Se encuentra en los repositorios de Debian y Ubuntu o incluso Arch, por lo que su instalación se reduce a un simple:

# en Debian o Ubuntu….
# aptitude install motion
# en Arch Linux
# pacman -S motion

Luego de ello, lo único que nos queda es configurar el programa usando el archivo /etc/motion/motion.conf. Los valores importantes dentro de este archivo son:

  • videodevice: por lo general es /dev/video0, y corresponde al dispositivo de video (cámara) con el que deseemos grabar. Ten en cuenta que si usas FreeBSD será /dev/bktr0.
  • width y height: son la anchura y altura de las imágenes, respectivamente.
  • threshold: motion funciona detectando que tantos píxeles cambiaron entre la imagen recién tomada y la anterior. El valor threshold determina el número de píxeles que deben cambiar para que motion dispare un evento de detección.
  • ffmpeg_video_codec: cada vez que se detecta un movimiento, motion genera un video con las imágenes del objeto que se ha movido. El valor asignado a ffmpeg_video_codec determina el tipo de video que se generará (por ejemplo, flv indica un video flash). Ten en cuenta que la codificación se realiza on ffmpeg.
  • target_dir: es el directorio donde se guardarán las imágenes capturadas.
  • webcam_port: es el puerto HTTP mediante el cual podremos ver en tiempo real lo que la cámara está grabando.
  • control_port: es el puerto HTTP mediante el cual podremos acceder a controlar motion.
  • on_event_start: aquí ponemos un comando a ejecutar cuando se detecte un movimiento.
  • on_event_end: aquí ponemos un comando a ejecutar cuando on_event_start termine.

Ejemplo de uso

En nuestro ejemplo, las modificaciones sobre el fichero /etc/motion/motion.conf son mínimas. Lo realmente importante es lo que se ha puesto en on_event_start y on_event_end: Leer el resto de la entrada…

14 Comentarios | deja el tuyo