El identificador numérico para el host es un número utilizado por una varios software licenciados, que identifican tu máquina y así determinar la validez de tu licencia.
Aunque es posible generar identificadores aleatorios mediante el comando genhostid, esto solo funciona mientras no exista el archivo /etc/hostid, que es precisamente lo que hace el mismo comando.
El problema no termina, por lo general necesitamos especificar un ID definido, quizá porque hemos migrado a un nuevo servidor donde debemos, en cuyo caso el comando anterior no nos ayuda mucho.
Para solucionar la situación anterior será mejor escribir un programa en C que nos ayude con la creación de un identificador dado por nosotros. Solo basta con copiar el siguiente código en un archivo .c:
int main(int argc, char *argv[]) {
int base, status;
char *str, *endptr;
long id;
if(argc < 2) {
fprintf(stderr, "Usage: %s hostid [base]\n", argv[0]);
exit(EXIT_FAILURE);
}
str = argv[1];
base = (argc > 2) ? atoi(argv[2]) : 16;
errno = 0;
id = strtol(str, &endptr, base);
if ((errno == ERANGE && (id == LONG_MAX || id == LONG_MIN)) || (errno != 0 && id == 0)) {
perror("strtol");
exit(EXIT_FAILURE);
}
if (endptr == str) {
fprintf(stderr, "No digits were found\n");
exit(EXIT_FAILURE);
}
status = sethostid(id);
if(status == 0) fprintf(stdout, "Host id changed to 0x%x\n", id);
else {
perror("sethostid");
exit(EXIT_FAILURE);
}
return 0;
}
Y posteriormente crear el binario, mediante el comando:
Ahora solo queda generar el ID según necesitemos:
El identificador puede indicarse en la base que requieras, por defecto en base hexadecimal (16).
Para comprobar tan solo utilizamos el comando:
Espero que sea de su utilidad. Nos vemos.
| Adjunto | Tamaño |
|---|---|
| changeHostID.c | 809 bytes |