Команда hostid

Команда hostid позволяет использовать одноименную утилиту для вывода числового идентификатора системы. Этот идентификатор основывается на IPv4-адресе системы и представлен в шестнадцатеричном формате.

Базовый синтаксис команды выглядит следующим образом:

$ hostid [параметры]

Утилита не поддерживает каких-либо важных параметров, позволяющих воздействовать на идентификатор системы. Она предназначена лишь для вывода ее идентификатора.

Несмотря на все вышесказанное, идентификатор системы не является уникальным значением, которое не может изменяться пользователем. Так, существует возможность создания файла конфигурации /etc/hostid, который может содержать желаемый пользователем идентификатор системы в бинарном формате. Также существуют функции sethostid() и gethostid() которые могут использоваться для манипуляций этим значением.

Примеры использования

Получение идентификатора системы

Для получения идентификатора системы достаточно использовать утилиту hostid без каких-либо параметров:

$ hostid
a8c0d201

В результате выводится лишь значение идентификатора системы без каких-либо описаний.

Смена идентификатора системы

Смена идентификатора системы может осуществляться как на временной, так и на постоянной основе. Для изменения идентификатора системы на временной основе может использоваться функция sethostid() — изменение осуществляется мгновенно и действует до перезагрузки. Для изменения идентификатора системы на постоянной основе следует создать файл /etc/hostid с бинарным значением идентификатора — для этой цели может использоваться следующий сценарий:

  1. #!/usr/bin/python
  2.  
  3. from sys import argv, exit
  4. from struct import pack
  5.  
  6. filename = "/etc/hostid"
  7.  
  8. if len(argv) != 2:
  9.     print("Usage: genhostid.py <hostid>")
  10.     exit(1)
  11.  
  12. if argv[1].startswith("0x"):
  13.     hostid = int(argv[1][2:], 16)
  14. else:
  15.     hostid = int(argv[1])
  16.  
  17. hostid = pack("I", hostid)
  18. open(filename,"wb").write(hostid)

Чтобы изменять идентификатор системы, следует сохранить код сценария в файле с именем genhostid.py, после чего выполнить аналогичную команду и перезагрузить систему:

$ sudo python genhostid.py 0x00010203

Конечно же, вы можете использовать любой корректный идентификатор системы вместо 0x00010203. Изменение произойдет только после перезагрузки системы.