Как установить имя хоста 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]}"