X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=fai%2Fconfig%2Fdistro-install-common%2Fdevbyid;h=733b8401e86dd092df93cc878e1f5fa78cb1cd3d;hb=HEAD;hp=e3443898795c52d5c8569c02e538b8765c23ecf2;hpb=3d9cc96092cdc8aa05bc95cf83c07bb1af692013;p=automated-distro-installer diff --git a/fai/config/distro-install-common/devbyid b/fai/config/distro-install-common/devbyid index e344389..733b840 100755 --- a/fai/config/distro-install-common/devbyid +++ b/fai/config/distro-install-common/devbyid @@ -1,19 +1,40 @@ #!/bin/bash +# This file is part of Ian Kelling's automated-distro-installer +# Copyright (C) 2024 Ian Kelling + +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # input eg: /dev/sda1 or /dev/sda # output: /dev/disk/by-id/model+serial, or if no link exists, the same as input short_dev=$1 +if [[ ! -e $short_dev ]]; then + echo "devbyid: error: argument=$short_dev does not exist" + exit 1 +fi -# devices are identified by model+serial num, -# and wwn. model+serial gives me more info, so use that. +# devices are identified by model+serial num +# and for ssd/hdd: wwn, and for nvme: eui. +# model+serial gives me more info, so use that. shopt -s extglob -for id in /dev/disk/by-id/!(wwn*); do - [[ -e $id ]] || break # if we matched nothing - if [[ $(readlink -f $id) == "$short_dev" ]]; then - printf '%s\n' "$id" - exit - fi +for id in /dev/disk/by-id/!(nvme-eui*|wwn*); do + [[ -e $id ]] || break # if we matched nothing + if [[ $(readlink -f $id) == "$short_dev" ]]; then + printf '%s\n' "$id" + exit + fi done # a vm may not have a by-id link. printf '%s\n' "$short_dev"