• Sábado 20 de Abril de 2024, 15:01

Autor Tema:  Informacion del PC  (Leído 5016 veces)

Juann

  • Miembro activo
  • **
  • Mensajes: 70
  • Nacionalidad: co
    • Ver Perfil
Informacion del PC
« en: Miércoles 14 de Octubre de 2009, 02:41 »
0
Bueno hace poco emplee esta API y me parece bueno compartirla con ustedes  :kicking:

Bueno esta API basicamente te da la información de la computadora como:
   
    * 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.

Las librerias necesarias estan aqui (Vienen dll, so, JAR): http://sourceforge.net/projects/sigar/files/

Como usar:

-Creamos una carpeta dentro del proyecto llamada lib, en donde guardaremos las librerías de Sigar (.jar, .so, .dll, etc.)

-Ahora descomprimimos el archivo que descargamos de Sigar, y copiamos los archivos que se encuentran en el a la carpeta lib de nuestro proyecto.

-Cabe resaltar que bastaría con copiar el archivo llamado sigar.jar y la librería del sistema donde vamos a correr nuestro programa (libsigar-amd64-linux.so en mi caso o la dll para windows y demas)

Clases

Información del sistema...
La siguiente clase nos permite obtener información del sistema operativo, como el nombre, la versión, la arquitectura, etc. Creamos una nueva clase llamada InfoSO con el siguiente código:

Código: Java
  1. import org.hyperic.sigar.OperatingSystem;
  2. import org.hyperic.sigar.Sigar;
  3. import org.hyperic.sigar.SigarException;
  4.  
  5. public class InfoSO {
  6.     private Sigar sigar = new Sigar();
  7.     public void imprimirInfo() {
  8.         OperatingSystem sys = OperatingSystem.getInstance();
  9.         System.out.println("Descripcion del SOt" + sys.getDescription());
  10.         System.out.println("Nombre del SOtt" + sys.getName());
  11.         System.out.println("Arquitectura del SOt" + sys.getArch());
  12.         System.out.println("Version del SOtt" + sys.getVersion());
  13.         System.out.println("Nivel de parchest" + sys.getPatchLevel());
  14.         System.out.println("Fabricantett" + sys.getVendor());
  15.         System.out.println("Version SOtt" + sys.getVendorVersion());
  16.         try {
  17.             imprimirUptime();
  18.         } catch (SigarException e) {
  19.             e.printStackTrace();
  20.         }
  21.     }
  22.     public void imprimirUptime() throws SigarException {
  23.         double uptime = sigar.getUptime().getUptime();
  24.         String resultado = "";
  25.         int dias = (int) uptime / (60 * 60 * 24);
  26.         int minutos, horas;
  27.         if (dias != 0)
  28.             resultado += dias + " " + ((dias > 1) ? "dias" : "dia") + ", ";
  29.         minutos = (int) uptime / 60;
  30.         horas = minutos / 60;
  31.         horas %= 24;
  32.         minutos %= 60;
  33.         if (horas != 0)
  34.             resultado += horas + ":" + (minutos < 10 ? "0" + minutos : minutos);
  35.         else
  36.             resultado += minutos + " min";
  37.         System.out.println("Encendido durante:t" + resultado);
  38.     }
  39. }
  40.  


Información de la CPU...

La siguiente clase nos permitirá conocer el modelo del procesador, sus capacidades, la cantidad de núcleos y el uso de los mismos, etc. Creamos una nueva clase llamada InfoCPU con el siguiente código:

Código: Java
  1. import org.hyperic.sigar.CpuInfo;
  2. import org.hyperic.sigar.CpuPerc;
  3. import org.hyperic.sigar.Sigar;
  4. import org.hyperic.sigar.SigarException;
  5.  
  6. public class InfoCPU {
  7.     private Sigar sigar;
  8.  
  9.     public void imprimirInfoCPU() {
  10.         sigar = new Sigar();
  11.         CpuInfo[] infos = null;
  12.         CpuPerc[] cpus = null;
  13.         try {
  14.             infos = sigar.getCpuInfoList();
  15.             cpus = sigar.getCpuPercList();
  16.         } catch (SigarException e) {
  17.             e.printStackTrace();
  18.         }
  19.  
  20.         CpuInfo info = infos[0];
  21.         long tamanioCache = info.getCacheSize();
  22.         System.out.println("Fabricante:tt" + info.getVendor());
  23.         System.out.println("Modelottt" + info.getModel());
  24.         System.out.println("Mhzttt" + info.getMhz());
  25.         System.out.println("Total CPUstt" + info.getTotalCores());
  26.         if ((info.getTotalCores() != info.getTotalSockets())
  27.                 || (info.getCoresPerSocket() > info.getTotalCores())) {
  28.             System.out.println("CPUs fisiscastt" + info.getTotalSockets());
  29.             System.out
  30.                     .println("Nucleos por CPUtt" + info.getCoresPerSocket());
  31.         }
  32.  
  33.         if (tamanioCache != Sigar.FIELD_NOTIMPL)
  34.             System.out.println("Tamanio cachett" + tamanioCache);
  35.         System.out.println("");
  36.  
  37.         for (int i = 0; i < cpus.length; i++)
  38.             System.out.println("Consumo de CPU " + i + "t"
  39.                     + CpuPerc.format(cpus[i].getUser()));
  40.  
  41.         try {
  42.             System.out.println("Consumo total de CPUt"
  43.                     + CpuPerc.format(sigar.getCpuPerc().getUser()));
  44.         } catch (SigarException e) {
  45.             e.printStackTrace();
  46.         }
  47.     }
  48. }
  49.  


Información del sistema de archivos...

La siguiente clase nos permite obtener información del sistema de archivos: unidades montadas, espacio en disco, tipo de sistema de archivos, etc. Creamos una nueva clase llamada InfoSistemaArchivos con el siguiente código:

Código: Java
  1. import org.hyperic.sigar.Sigar;
  2. import org.hyperic.sigar.SigarException;
  3. import org.hyperic.sigar.FileSystem;
  4. import org.hyperic.sigar.FileSystemUsage;
  5. import org.hyperic.sigar.NfsFileSystem;
  6. import org.hyperic.sigar.SigarProxy;
  7. import org.hyperic.sigar.SigarProxyCache;
  8.  
  9. public class InfoSistemaArchivos {
  10.     private SigarProxy proxy;
  11.     private Sigar sigar;
  12.  
  13.     public InfoSistemaArchivos() {
  14.         sigar = new Sigar();
  15.         proxy = SigarProxyCache.newInstance(sigar);
  16.     }
  17.  
  18.     public void imprimirInfo() throws SigarException {
  19.         FileSystem[] listaSistemaArchivos = proxy.getFileSystemList();
  20.         System.out.println("ndispos.|total|usado|disponible|%uso|dir|tipon");
  21.         for (int i = 0; i < listaSistemaArchivos.length; i++)
  22.             imprimirSistemaArchivos(listaSistemaArchivos[i]);
  23.     }
  24.  
  25.     public void imprimirSistemaArchivos(FileSystem sistemaArchivos)
  26.             throws SigarException {
  27.         long usado, disponible, total, porcentaje;
  28.  
  29.         try {
  30.             FileSystemUsage uso;
  31.             if (sistemaArchivos instanceof NfsFileSystem) {
  32.                 NfsFileSystem nfs = (NfsFileSystem) sistemaArchivos;
  33.                 if (!nfs.ping()) {
  34.                     System.out.println(nfs.getUnreachableMessage());
  35.                     return;
  36.                 }
  37.             }
  38.             uso = sigar.getFileSystemUsage(sistemaArchivos.getDirName());
  39.  
  40.             usado = uso.getTotal() - uso.getFree();
  41.             disponible = uso.getAvail();
  42.             total = uso.getTotal();
  43.  
  44.             porcentaje = (long) (uso.getUsePercent() * 100);
  45.         } catch (SigarException e) {
  46.             // por ejemplo, si en al procesar D: en windows falla
  47.             // con "Device not ready"
  48.             usado = disponible = total = porcentaje = 0;
  49.         }
  50.  
  51.         String porcentajeUso;
  52.         if (porcentaje == 0)
  53.             porcentajeUso = "-";
  54.         else
  55.             porcentajeUso = porcentaje + "%";
  56.  
  57.         System.out.print(sistemaArchivos.getDevName());
  58.         System.out.print("|" + total);
  59.         System.out.print("|" + usado);
  60.         System.out.print("|" + disponible);
  61.         System.out.print("|" + porcentajeUso);
  62.         System.out.print("|" + sistemaArchivos.getDirName());
  63.         System.out.println("|" + sistemaArchivos.getSysTypeName());
  64.     }
  65. }
  66.  


Información de la memoria...

La siguiente clase nos permite conocer la cantidad de memoria RAM que tiene el equipo, así como la que se está usando actualmente (tanto memoria física como virtual, aka, swap). Creamos una nueva clase llamada InfoMemoria con el siguiente código:

Código: Java
  1. import org.hyperic.sigar.Mem;
  2. import org.hyperic.sigar.Sigar;
  3. import org.hyperic.sigar.Swap;
  4. import org.hyperic.sigar.SigarException;
  5.  
  6. public class InfoMemoria {
  7.     private Sigar sigar = new Sigar();
  8.     public void imprimirInfo() throws SigarException {
  9.         Mem memoria = sigar.getMem();
  10.         Swap intercambio = sigar.getSwap();
  11.        
  12.         System.out.println("Cantidad de memoria RAM: "+ memoria.getRam() + "MB");
  13.  
  14.         System.out.println("Total: "+enBytes(memoria.getTotal()));
  15.         System.out.println("Usada: "+enBytes(memoria.getUsed()));
  16.         System.out.println("Disponible: "+enBytes(memoria.getFree()));
  17.  
  18.         System.out.println("Memoria SWAP total: "+enBytes(intercambio.getTotal()));
  19.         System.out.println("Memoria SWAP usada: "+enBytes(intercambio.getUsed()));
  20.         System.out.println("Memoria SWAP libre: "+enBytes(intercambio.getFree()));
  21.  
  22.     }
  23.     private Long enBytes(long valor) {
  24.         return new Long(valor / 1024);
  25.     }
  26. }
  27.  


La clase main...

El main de nuestro proyecto estará contenido en la clase InfoSistema:

Código: Java
  1. import org.hyperic.sigar.SigarException;
  2. public class InfoSistema {
  3.     public static void main(String[] args) {
  4.         try {
  5.             System.out.println("====Informacion del sistema====");
  6.             new InfoSO().imprimirInfo();
  7.             System.out.println("n==== Informacion de la CPU ====");
  8.             new InfoCPU().imprimirInfoCPU();
  9.             System.out.println("n====Informacion del sistema de archivos====");
  10.             new InfoSistemaArchivos().imprimirInfo();
  11.             System.out.println("n====Informacion de la memoria====");
  12.             new InfoMemoria().imprimirInfo();
  13.         } catch (SigarException e) {
  14.             e.printStackTrace();
  15.         }
  16.     }
  17. }
  18.  

Fuente: CasiDiablo.net
Juan Camilo Pareja

http://darkymiau.blogspot.com/ Mi blog sobre informatica en General