如何根据闪存盘卷标设置 Linux 主机名

如何根据闪存盘卷标设置 Linux 主机名

我正在运行 live linux,它从 FAT32 闪存盘运行,因为我用这个闪存盘运行了很多电脑,很难识别它的主机名的 IP,因为它的 ip 需要由 dhcp 动态确定,所以我想通过在其 flasdisk 上设置的卷标来设置它们的主机名

我可以使用blkid | grep sda1blkid | 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]}"

相关内容