Programa Java para obtener el UUID del sistema para la máquina Linux

Los identificadores únicos universales (UUID) también se conocen como identificadores únicos globales (GUID), que son números de 128 bits y son únicos en todos los sistemas locales en los que se crean, y también se crean UUID entre otros sistemas. La clase Java UUID es parte del paquete java.util . La clase UUID de Java representa un identificador único universal inmutable. UUID es una combinación de 8-4-4-4-12 caracteres .

El UUID se compone de dígitos hexadecimales (4 caracteres cada uno) junto con 4 símbolos «-«, lo que hace que su longitud sea igual a 36 caracteres . Un UUID puede tener todos los bits establecidos en cero, lo que también se conoce como Nil UUID

Estructura de UUID

Estructura de los términos de UUID

  • time_low: tiempo bajo de 32 bits
  • time_mid: 16 bits intermedios de tiempo
  • time_hi_and_version: versión de 4 bits en el MSB, seguida de 12 bits altos de la hora
  • clock_seq_hi_and_res_clock_seq_low: variante de 1-3 bits en los bits más significativos seguida de una secuencia de reloj de 13-15 bits
  • Node: ID de Node de 48 bits

Aplicaciones de Java UUID

  1. Se usa para crear ID de sesión para aplicaciones web, también se usa para crear ID de transacción
  2. Extiende la clase de objeto
  3. Se utiliza para crear nombres de archivos aleatorios
  4. Implementa interfaces serializables y comparables
  5. Se utiliza para generar la clave principal para la tabla de base de datos

Métodos para generar UUID de Java

Versión 1: generación de valor de Node() para UUID basado en el tiempo

Aquí, el método devuelve el valor largo del Node del UUID y, para obtener el valor del Node, necesitamos crear un UUID basado en el tiempo (versión 1). Devuelve el valor del Node asociado con el UUID. Es un valor de Node de 48 bits. Contiene la dirección IEEE 802 (Dirección MAC) de la máquina. 

Ejemplo:

Java

// Java program for Generating node()
// value for time based UUID
 
//import UUID package
import java.util.UUID;
public class UUIDMain {
    public static void main(String arg[])
    {
        // returns a UUID with specified value
        UUID uuid = UUID.fromString("237e9877-e79b-12d4-a765-321741963000");
       
        // returns node value
        System.out.println("Node value: "
            + uuid.node());
       
      System.out.println("UUID Version : "
                           + uuid.version());
    }
}
Producción

Node value: 55075465998336
UUID Version : 1

Versión 2: UUID basado en nombre

 Un método de fábrica estático utilizado para obtener UUID basado en nombre utilizando la array de bytes especificada. Utiliza «nombre» en el sentido de transmisión imaginable y un UUID que indica el tipo de nombre utilizado. 

Ejemplo:

Java

// Java program for generating Name based UUID
 
import java.util.UUID;
public class Main {
 
    public static void main(String[] args)
    {
 
        // initialize byte array
        byte[] bs = { 1, 2, 3 };
       
        // initialize uuid using byte array
        UUID uuid = UUID.nameUUIDFromBytes(bs);
       
        System.out.println("UUID : " + uuid);
        System.out.println("UUID Version : "
                           + uuid.version());
    }
}
Producción

UUID : 5289df73-7df5-3326-bcdd-22597afb1fac
UUID Version : 3

UUID para máquina Linux 

Los dos enfoques anteriores se pueden utilizar para generar UUID para el sistema Linux. Para generar un UUID de sistema para Linux Machine, se necesitan algunos requisitos previos antes de generar un UUID.
 

  • Se debe instalar Java Development Kit (JDK), la última versión funcionaría mucho mejor aquí
  • Es necesario configurar el editor Vim o Gedit para compilar y ejecutar el código.
  • Conceptos básicos para trabajar con el editor Vim necesarios para compilar, guardar, ejecutar y editar el programa.
  • Conocimiento de ejecución de código tanto en Vim Editor como en Linux Kernel/Terminal con la ayuda de los comandos de Linux.

Para el código que se proporciona a continuación, Vim Editor se usa para compilar y ejecutar el programa. UUID es un identificador único que se utiliza en las particiones para identificar de forma única las particiones en los sistemas operativos Linux. UUID es una propiedad de la propia partición del disco. 

En el siguiente código, importamos el paquete Buffer Reader y Input Stream Reader, luego generamos un UUID aleatorio con la ayuda del método String para obtener las entradas de él y generar UUID.  

Java

// Java Program to get System UUID Number for linux Machine
// (Root User Login is Req for running the code)
 
import java.io.BufferedReader;
import java.io.InputStreamReader;
 
public class Main {
 
    // Method for get System UUID for Linux Machine
    static String getLinuxSystem_UUID()
    {
        String command = "dmidecode -s system-uuid";
 
        // setting uuid to null first
        String uuid = null;
        try {
            Process SerNumProcess
                = Runtime.getRuntime().exec(command);
            BufferedReader sNumReader
                = new BufferedReader(new InputStreamReader(
                    SerNumProcess.getInputStream()));
 
            // reads the uuid line by line to separate the
            // uuid into 4 parts
            uuid = sNumReader.readLine().trim();
 
            SerNumProcess.waitFor();
            sNumReader.close();
        }
        catch (Exception ex) {
            System.err.println("Linux UUID Exp : "
                               + ex.getMessage());
            uuid = null;
        }
        finally {
            return uuid;
        }
    }
 
    public static void main(String[] args)
    {
        // generates uuid for linux system
        String system_uuid = getLinuxSystem_UUID();
 
        System.out.println("Linux System UUID Number : "
                           + system_uuid);
    }
}

Producción:

UUID del sistema para máquina Linux

Publicación traducida automáticamente

Artículo escrito por sindhu20 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *