Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

470
Views
¿Cómo generar un UUID por host en un script de Shell?

Estoy escribiendo un script de shell que se implementará en varias máquinas y se conectará a un servidor central. Al conectarse, el script debe identificar la máquina en la que se está ejecutando. (Esto se usa para implementar un bloqueo rudimentario, pero eso no es importante para la pregunta).

Sé que podría usar el nombre de host, como lo informa hostname -f , para identificar la máquina. Pero muchos dispositivos personales tienen nombres de host que no son únicos, como my-laptop o estación de workstation , por lo que desconfío de usar esto.

Es posible que pueda agregar entropía al codificar el nombre del host junto con otra información específica del host que no cambiará.

 echo $(hostname -f) $(uname -snmpio) | md5sum

Pero la entropía añadida es muy baja. Tengo dificultades para pensar en otras propiedades del sistema que se puedan modificar y que se garantice que no cambiarán. (Por ejemplo, no quiero agregar ninguna propiedad del sistema de archivos u otra configuración del sistema 1 porque podría cambiar legítimamente en cualquier momento).

Finalmente, pensé en generar una cadena aleatoria la primera vez que se ejecuta el script y almacenarlo en algún archivo de configuración. Es muy probable que esto sea único y se garantice que no cambiará. Pero si es posible, preferiría no tener que administrar el estado persistente.

Idealmente, existiría una utilidad para obtener un UUID no volátil determinista para el sistema local (como blkid para dispositivos de bloque). No se requiere que los UUID sean difíciles de falsificar. Este no es un mecanismo de autenticación y confío en todas las partes que ejecutan el script.

¿Hay alguna opción superior que haya pasado por alto?


1 Técnicamente, el nombre de host también es una configuración del sistema. Pero si lo cambiamos, esperamos que el sistema ya no se identifique como el que era antes.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Cómo generar UUID de la versión 4

La forma más fácil de generar un identificador único es usar un UUID. El tipo más común de UUID para este propósito es UUID v4 , que generalmente es la opción correcta a menos que tenga algunas circunstancias específicas (por ejemplo, requisitos de espacio de nombres o fuentes de entropía deficientes) que lo lleven a usar uno de los otros tipos de UUID.

Puede usar uuidgen en Linux, que se puede encontrar en el paquete "uuid-runtime" en los sistemas basados en Debian. La herramienta uuidgen también está instalada de forma predeterminada en OS X , en caso de que la necesite. En Linux, la herramienta se basa en libuuid y /dev/random para generar UUID de la versión 4. Si no hay disponible un generador de números aleatorios de alta calidad, uuidgen recurrirá a los UUID basados en el tiempo de la versión 1.

UUIDGEN(1) dice:

Hay dos tipos de UUID que uuidgen puede generar: UUID basados en el tiempo y UUID basados en el azar. Por defecto, uuidgen generará un UUID aleatorio si hay un generador de números aleatorios de alta calidad. De lo contrario, elegirá un UUID basado en el tiempo. Es posible forzar la generación de uno de estos dos tipos de UUID utilizando las opciones -r o -t.

Como regla general, si puede hacerlo, definitivamente debe quedarse con la Versión 4, ya que la Versión 1 tiene riesgos de seguridad conocidos y limitaciones en sus propiedades únicas. Sin embargo, los casos de uso específicos pueden variar.

over 4 years ago · Santiago Trujillo Report

0

Con el interés de proporcionar opciones, puede usar la huella digital RSA del host local. Lo más probable es que sus máquinas tengan todos los componentes necesarios ya configurados.

 hostkey=$(ssh-keygen -l -f /path/to/host_key.pub)

La salida contendrá espacios y otras cosas, pero podría analizarlos si es un problema. La clave de host suele estar en /etc/ssh/ssh_host_* pero puede depender de la distribución de Linux.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!