Как установить имя хоста Linux на основе метки тома флэш-диска

Я использую live linux, который запускается с флэш-диска FAT32, так как я использую этот флэш-диск на большом количестве ПК, трудно определить, какой IP-адрес для его имени хоста, так как его IP-адрес должен динамически определяться с помощью dhcp, поэтому я хочу установить их имя хоста по объему этикетки, установленной на его флешке

я могу использовать blkid | grep sda1 или же blkid | grep "vfat"

результаты

#blkid | grep sda1
/dev/sda1: LABEL="SLAX" UUID="FAEB-513E" TYPE="vfat"

#blkid | grep "vfat"
/dev/sda1: LABEL="SLAX" UUID="FAEB-513E" TYPE="vfat"

но как разобрать его метку и установить мое имя хоста при загрузке?

1 ответ

Решение
hostname $(blkid | perl -lne '/LABEL="(.*?)".*vfat/ and print $1')

или же

hostname $(blkid | perl -lne '/sda1.*LABEL="(.*?)"/ and print $1')

Поскольку у вас нет Perl, ваш grep может не иметь -P, если это так, попробуйте

hostname $(blkid | grep -Po 'LABEL="\K.*?(?=".*vfat)')

или же

hostname $(blkid | grep -Po 'sda1: LABEL="\K.*?(?=".*)')

Для чистой версии Bash:

pattern='sda1.*LABEL="([^"]+)"'    # or: pattern='LABEL="([^"]+)".*vfat'
[[ $(sudo blkid) =~ $pattern ]]
hostname "${BASH_REMATCH[1]}"
Другие вопросы по тегам