static usb ethnet addresses
[automated-distro-installer] / fai / config / distro-install-common / devbyid
index e3443898795c52d5c8569c02e538b8765c23ecf2..733b8401e86dd092df93cc878e1f5fa78cb1cd3d 100755 (executable)
@@ -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"