Al igual que puede determinar información sobre el usuario, un programa puede establecer detalles sobre el ordenador en el cual se está ejecutando. El comando
uname
proporciona dicha información. uname
existe también como llamada al sistema para proporcionar la misma información en un programa C, compruébelo en la sección relativa a las llamadas al sistema en la página de consulta usando man uname
(en español).
La información sobre el ordenador central puede resultar útil en diferentes ocasiones. Es posible que desee personalizar el comportamiento de un programa, dependiendo del nombre del ordenador que se está ejecutando en una red, es decir, el ordenador de un estudiante o el de un administrador. En lo referente a las licencias, es posible que desee restringir un programa para que se ejecute únicamente en un ordenador. Todo ello significa que necesita un modo para establecer en qué ordenador se está ejecutando el programa.
Si el sistema tiene componentes de red instalados, podremos obtener el nombre de red fácilmente gracias a la función gethostname
:
La función gethostname escribe el nombre de red del ordenador en la cadena name.
Esta cadena debería tener, como mínimo,
namelen
caracteres de largo.
gethostname
envía 0
si tiene éxito y -1
en el caso contrario.
Puede obtener información más detallada sobre el ordenador central a partir de la llamada al sistema uname
:
La función
uname
escribe la información sobre el ordenador central en la estructura que indica el parámetro name
.
La estructura
utsname
, definida en sys/utsname.h
, debe contener como mínimo estos miembros:
uname
envía un entero positivo si tiene éxito, y -1
si falla, con errno
para indicar cualquier error.
El programa hostget.c
, que veremos a continuación, extrae información sobre el ordenador central:
Proporciona la siguiente salida específica de Linux. Si su máquina está conectada en red, es posible que vea otro nombre que incluye la red:
Este programa llama a gethostname para obtener el nombre de red del ordenador principal.
La llamada uname envía más información sobre este ordenador.
A partir de la función
gethost
, se puede obtener un identificador único para cada ordenador central:
La función
gethostid
está pensada para enviar un valor único sobre el ordenador central. Los gestores de licencia lo usan para comprobar que los programas de software se ejecutan una única vez en los ordenadores que tienen licencias válidas. En las estaciones Sun, envía un número que se configura en la memoria no volátil cuando se crea el ordenador, y que es, por lo tanto, único del hardware del sistema. Otros sistemas, como Linux, envían un valor basado en la dirección de Internet del ordenador, que no suele ser lo suficientemente seguro como para usarlo para cuestiones de seguridad.