2015-04-28 2 views
0

Приложение python, запущенное как демон в различных дистрибутивах Linux, пытается зарегистрироваться на моем сервере, используя IP-адрес и FQDN-имя машины (заданное командой «hostname -f») в качестве первичного ключа.Как создать уникальный идентификатор для данной Linux-машины?

Теперь я столкнулся с проблемой, когда две машины имеют одинаковое имя хоста и IP-адрес. Например, в случае, если две виртуальные машины работают на двух отдельных машинах, имя хоста - «localhost.localdomain», а Ip Address - «192.168.0.2» для обоих из них.

Есть ли уникальный способ различить любые две машины. (Может быть, какой-то другой третий параметр, который гарантирует уникальность на любой машине linux)

ответ

2

MAC-адрес должен быть уникальным для каждого сетевого интерфейса. Возможно, вы можете попробовать сочетание IP, MAC и имени хоста?

Другой вариант - создать UUID и сохранить его на машине.

+0

Использование MAC-адреса также сложно, поскольку в описании python uuid упоминается (https://docs.python.org/2/library/uuid.html#uuid.getnode), что функция getnode возвращает MAC-адрес случайно из любого интерфейсов. Это также настоятельно рекомендуется на http://stackoverflow.com/questions/159137/getting-mac-address#comment49688_159195 Пожалуйста, дайте мне знать, есть ли способ определить основной MAC-адрес с помощью python. –

+0

Я думаю, что лучший способ - создать случайный uuid и сохранить его на локальной машине, чтобы вы могли идентифицировать себя с ним на своем сервере. также getnode будет выполнять эту работу, пока вы сохраняете результаты на машине и повторно используете ее. – assaf

+0

Проблема в том, что это приложение работает в большом количестве (тысяч) пользовательских машин не только локально на моей машине. Ваше решение только увеличивает вероятность того, что я получу «дублируемую ошибку первичного ключа» сверхурочно. –