Назад | Перейти на главную страницу

как установить имя хоста linux на основе метки тома flashdisk

Я запускаю 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"

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

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]}"