Summary: | Генерирует слишком длинное имя хоста | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Sergey V Turchin <zerg> |
Component: | installer-common-stage2 | Assignee: | Anton V. Boyarshinov <boyarsh> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P5 | CC: | antohami, arbich, boyarsh, iv, klark, mike, rider, sem, sin, vitty, zerg |
Version: | unstable | ||
Hardware: | x86_64 | ||
OS: | Linux | ||
See Also: |
https://bugzilla.altlinux.org/show_bug.cgi?id=39758 https://bugzilla.altlinux.org/show_bug.cgi?id=41234 |
Description
Sergey V Turchin
2021-03-05 15:10:33 MSK
Вообще генерацией занимается preinstall.d/40-autohostname.sh из пакета installer, так что перевешу ка я это на правильный компонент. В #39758 говорят об ограничении в 13 символов. Это прям вообще мало для чего-то автосгенерённого: если мы используем 6 последних символов на кусок мак-адреса для уникальности, то остаётся всего 7 символов на что-то человекоориентированное. Интересно, какие ещё оганичения на hostname (помимо соответствующих RFC) существуют. Как вариант, можно где-то уже в net-eth (бишь stage3) смотреть и если по умолчанию выходит слишком длинное имя -- обрезать (в случае соответствия шаблону автогенерата) или предупреждать, что с такими-то компонентами будут грабли. (Ответ для Арбичев Игорь на комментарий #0) > It may be because your hostname is longer than 13 and samba default > 'netbios name' defaults to 'hostname-W', here: "comp-core2-duo-4e3cb5-W" Можно, кстати, ещё и прогонять при генерации через горстку регулярных выражений для расхожих вариантов вроде s/core2-duo/c2d/;s/core2-quad/c2q/;s/core-// (чтобы мой core-i7-3517u потерял пять лишних букв, например). Ну, я бы не сводил вопрос генерации к вопросу о предупреждении. Предупреждение - это задача инструмента применения настройки. И, в данном случае, это alterator-net-eth, который умеет менять имя хоста. А вот вопрос слишком длинного имени, предполагает "улучшить" генератор имён. Насколько я понимаю, кто самбу настраивает, тот и должен позаботиться о том, чтоб netbios имя было подходящей длины. Человек или софт. А на hostname как таковой эти ограничения распространяться не должны. (Ответ для Anton V. Boyarshinov на комментарий #6) > Насколько я понимаю, кто самбу настраивает, тот и должен позаботиться о том, > чтоб netbios имя было подходящей длины. Согласен, что в 1-ю очередь должно быть https://bugzilla.altlinux.org/show_bug.cgi?id=39758#c1 (Ответ для Anton V. Boyarshinov на комментарий #6) > Насколько я понимаю, кто самбу настраивает, тот и должен позаботиться о том, > чтоб netbios имя было подходящей длины. Человек или софт. Софт: samba должна мочь повлиять на выбор имени хоста, а это маловероятно. Человек: можно его как-то заставить, но он переведёт стрелки на генератор. Возможно, есть смысл сделать плашку с предупреждением под именем хоста в alterator-net-eth в дополнение к генератору, чтоб до упора его не ужимать и в генераторе максимально возможное убрать. Ещё можно(наверняка) настройку сети сдвинуть после создания пользователя и тогда генератор сможет это использовать. Будет вполне вменяемо получаться, как маздае, типа "pupkin-comp". сдвинуть настойку отличная идея, мне нравится. (Ответ для Sergey V Turchin на комментарий #10) > Ещё можно(наверняка) настройку сети сдвинуть после создания пользователя и > тогда генератор сможет это использовать. Будет вполне вменяемо получаться, > как маздае, типа "pupkin-comp". Имя хоста генерируется preinstall.d/40-autohostname.sh на шаге preinstall. Этот шаг передвинуть не можем, а передвигать шаг настройки сети смысла не имеет. Значит, остаётся только сделать галку "Совместмость с различными сервисами" https://bugzilla.altlinux.org/show_bug.cgi?id=39758#c22 и в рамках её мудрить. А лучше всего без всяких галок тупо ограничивать до необходимого для всего подряд сразу. (Ответ для Sergey V Turchin на комментарий #14) > А лучше всего без всяких галок тупо ограничивать до необходимого для всего > подряд сразу. Так в скрипте preinstall.d/40-autohostname.sh это сделать и нужно. Предлагайте алгоритм формирования имени. Сейчас это comp + Модель_процессора_если _есть_из_/proc/cpuinfo + вторая_половина_mac-адреса_первого_ethernet_интерфейса_если_такой_есть (Ответ для Антон Мидюков на комментарий #15) > Так в скрипте preinstall.d/40-autohostname.sh это сделать и нужно. Ок. > Предлагайте алгоритм формирования имени. Сейчас это comp + 3. Если итог > 13и символов, не добавлять "-comp" вообще. > Модель_процессора_если _есть_из_/proc/cpuinfo + 1. Сократить по максимуму, убирая всякие "core-", чтоб только модель осталась, типа "i7-7500u". Тут, видимо, сложнее всего. > вторая_половина_mac-адреса_первого_ethernet_интерфейса_если_такой_есть 2. Если итог > 13и символов, сократить напополам. 4. Если итог > 13и символов, убрать минусы. (Ответ для Sergey V Turchin на комментарий #16) > > вторая_половина_mac-адреса_первого_ethernet_интерфейса_если_такой_есть > 2. Если итог > 13и символов, сократить напополам. Последнюю часть оставлять, соответственно. + считать 64-битный хэш от имени + макадреса + random и писать его в конец. (Ответ для Anton Farygin на комментарий #18) > + считать 64-битный хэш от имени + макадреса + random и писать его в конец. Мы сокращаем, а не удлинняем. (Ответ для Anton Farygin на комментарий #18) > + считать 64-битный хэш от имени + макадреса + random и писать его в конец. Идея была в том, чтоб имя было хоть каким-то разумным образом связано с компьютером. от процессора можно оставить i7 Т.е. - я думаю что идеальным hostname должно быть что-то вроде i7-<8 байт> (Ответ для Anton V. Boyarshinov на комментарий #20) > Идея была в том, чтоб имя было хоть каким-то разумным образом связано с компьютером. При этом закодировано, чтоб никто не догадался. ;-) (Ответ для Anton Farygin на комментарий #21) > Т.е. - я думаю что идеальным hostname должно быть что-то вроде i7-<8 байт> Это когда "Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz", а как быть с "AMD Athlon(tm) 64 X2 Dual Core Processor 5000+, например"? > Это когда "Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz",
> а как быть с "AMD Athlon(tm) 64 X2 Dual Core Processor 5000+, например"?
Мой вариант в этих случаях: "a15-107" и "i6-142".
1-я буква из "model name", число из "cpu family", число из "model".
(In reply to Sergey V Turchin from comment #24) > > Это когда "Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz", > > а как быть с "AMD Athlon(tm) 64 X2 Dual Core Processor 5000+, например"? > Мой вариант в этих случаях: "a15-107" и "i6-142". > 1-я буква из "model name", число из "cpu family", число из "model". Главное, не забудте, что всего этого может вообще не быть, а в "model" может быть и не число. Некоторые архитектуры странные) (Ответ для Ivan A. Melnikov на комментарий #25) > (In reply to Sergey V Turchin from comment #24) > > > Это когда "Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz", > > > а как быть с "AMD Athlon(tm) 64 X2 Dual Core Processor 5000+, например"? > > Мой вариант в этих случаях: "a15-107" и "i6-142". > > 1-я буква из "model name", число из "cpu family", число из "model". > > Главное, не забудте, что всего этого может вообще не быть, а в "model" может > быть и не число. Некоторые архитектуры странные) Так может просто comp-<MAC-адрес>, если сетевого интерфейса нет, то comp-<RANDOM>?(Ответ для Ivan A. Melnikov на комментарий #25) > (In reply to Sergey V Turchin from comment #24) > > > Это когда "Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz", > > > а как быть с "AMD Athlon(tm) 64 X2 Dual Core Processor 5000+, например"? > > Мой вариант в этих случаях: "a15-107" и "i6-142". > > 1-я буква из "model name", число из "cpu family", число из "model". > > Главное, не забудте, что всего этого может вообще не быть, а в "model" может > быть и не число. Некоторые архитектуры странные) Кстати, что Таволга и bfk3 выдают? (Ответ для Sergey V Turchin на комментарий #23) > (Ответ для Anton Farygin на комментарий #21) > > Т.е. - я думаю что идеальным hostname должно быть что-то вроде i7-<8 байт> > Это когда "Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz", > а как быть с "AMD Athlon(tm) 64 X2 Dual Core Processor 5000+, например"? AMD-<8 байт> Во многих организациях стоят сотни одинаковых машин. Пытаться сделать уникальное имя для них нет никакого смысла. Вот брать последние 2 байта мак-адреса в имя, наверное, можно. (Ответ для Anton Farygin на комментарий #27) > > > hostname должно быть что-то вроде i7-<8 байт> > AMD-<8 байт> Думаю, заманаешься выпарсивать. (Ответ для Sergey V Turchin на комментарий #28) > (Ответ для Anton Farygin на комментарий #27) > > > > hostname должно быть что-то вроде i7-<8 байт> > > AMD-<8 байт> > Думаю, заманаешься выпарсивать. Откуда выпарсивать ? Слово AMD ? (Ответ для Anton Farygin на комментарий #29) > Слово AMD ? Только, не "AMD", а "amd". Нет. Слова "amd", "i7","e2k" и остальные. Проще 1-ю букву от "model name" взять. > в "model" может быть и не число
Да не суть.
(Ответ для Anton Farygin на комментарий #27) > AMD-<8 байт> > Во многих организациях стоят сотни одинаковых машин. Пытаться сделать > уникальное имя для них нет никакого смысла. На всякий случай обращаю внимания на то, что этот алгоритм работает только в ситуации, когда машине не дали адреса по DHCP. Если дали и он ресолвится в имя -- будет это имя. Если дали, но не ресолвится в имя -- будет host-последний_байт_ip А comp-.... это последний рубеж. Идеальное имя хоста. Найдено в сети. perl -e 'open IN, "</usr/share/dict/words";rand($.) < 1 && ($n=$_) while <IN>;$n=~s/'\''//g;print lc($n)' А ещё есть файл /etc/machine-id первые/последние байты которого можно использовать для генерации имени хоста (In reply to Anton Farygin from comment #33) > Идеальное имя хоста. Найдено в сети. > perl -e 'open IN, "</usr/share/dict/words";rand($.) < 1 && ($n=$_) while > <IN>;$n=~s/'\''//g;print lc($n)' $ perl -e 'open IN, "</usr/share/dict/words";rand($.) < 1 && ($n=$_) while <IN>;$n=~s/'\''//g;print lc($n)' bitimen $ perl -e 'open IN, "</usr/share/dict/words";rand($.) < 1 && ($n=$_) while <IN>;$n=~s/'\''//g;print lc($n)' peristatic $ perl -e 'open IN, "</usr/share/dict/words";rand($.) < 1 && ($n=$_) while <IN>;$n=~s/'\''//g;print lc($n)' biorthonormalization Но идея хорошая. Я думал предложить какой-нибудь такой список за основу: https://github.com/technosophos/moniker/blob/master/animals.txt Там же есть генератор красивых паролей. Надо его и использовать. Для уникальности предлагаю составить список российских городов, штук 800 и с помощью random выбирать из них случайное имя и делать его именем хоста. Можно поизвращаться, составив список не городов, а рек и выбирать только 8-ми буквенные и добавлять к ним номер с мак-адреса. В установщике уже есть pwqgen со своим словарём. Достаточно подсунуть ему нужный конфиг. В openSUSE последние полгода вообще перестали заморачиваться с генерацией рандомного имени и всем назначают типа "admin@localhost:~>". Зато заведомо короче 15 символов. (Ответ для Арбичев Игорь на комментарий #39) > admin@localhost У нас это повод для шутки. ;-) А мне вот не до шуток. Я хотел бы узнать, собираетесь ли вы решать эту проблему в установщике? (In reply to Арбичев Игорь from comment #41) > А мне вот не до шуток. Я хотел бы узнать, собираетесь ли вы решать эту > проблему в установщике? Собираемся. (Ответ для Арбичев Игорь на комментарий #41) > А мне вот не до шуток. Мне тоже, поэтому этот пример не рассматривается. installer-1.10.10-alt1 -> sisyphus: Fri Apr 09 2021 Oleg Solovyov <mcpain@altlinux> 1.10.10-alt1 - generate hostname via pwqgen, if it's longer than 13 chars (Closes: 39761) |