# 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"