Здравствуйте!
Занимаюсь сборкой ОС на базе Debian для бездисковых рабочих станций и загрузкой по сети без корня по NFS.
Есть идея назначать уникальное имя для хостов основанное на mac-адресе. Зачем? Опять же в планах управлять этими хостами через puppet.
Проблема возникает с systemd. В интернете нашел пример:
[Unit]
Description=Start Debian with a different hostname each boot
Wants=network-pre.target
Before=network-pre.target
[Service]
ExecStart=/usr/bin/newhostname
Type=oneshot
[Install]
WantedBy=multi-user.target
#!/usr/bin/env bash
# Description: Generate and set a random hostname on Linux
# Requires: sed, awk
# Usage: set-random-hostname
__set_random_hostname() {
local new_hostname=$(head -n1 < <(fold -w8 < <(tr -cd 'a-z0-9' < /dev/urandom)))
# set new hostname
hostnamectl set-hostname "$new_hostname"
# set new hostname in /etc/hosts
sed -i "2 s/^.*$/127.0.1.1 $new_hostname/g" /etc/hosts
}
__set_random_hostname
Все работает отлично и каждый раз у хоста новое динамическое имя. Попытался вставить
cat /sys/class/net/*/address | sed ':a;N;$!ba;s/\(\n\|:\)//g'
не работает. Подставляет, только localhost.
Запускаю с выводом в файл:
cat /sys/class/net/*/address | sed ':a;N;$!ba;s/\(\n\|:\)//g' > /tmp/firstboot
ip a >> /tmp/firstboot
В /tmp/firstboot только localhost. Что я только не делал, менял target в Юните результат один.
Подскажите что можно сделать, нужно чтобы сетевые устройства уже были инициализированы, но не подняты.