If a result is generated it is sent to standard output, and the program exits with a zero value. If no identifier is output, the program exits with a non-zero value.
scsi_id is primarily for use by other utilities such as udev that require a unique SCSI identifier.
By default all devices are assume black listed, the -g option must be specified on the command line or in the config file for any useful behaviour.
SCSI commands are sent directly to the device via the SG_IO ioctl interface.
In order to generate unique values for either page 0x80 or page 0x83, the serial numbers or world wide names are prefixed as follows.
Identifiers based on page 0x80 are prefixed by the character 'S', the SCSI vendor, the SCSI product (model) and then the the serial number returned by page 0x80. For example:
# scsi_id -p 0x80 -s /block/sdg SIBM 3542 1T05078453
Identifiers based on page 0x83 are prefixed by the identifier type followed by the page 0x83 identifier. For example, a device with a NAA (Name Address Authority) type of 3 (also in this case the page 0x83 identifier starts with the NAA value of 6):
# /sbin/scsi_id -p 0x83 -s /block/sdg 3600a0b80000b174b000000d63efc5c8c
The default behaviour is to query the availabe VPD pages, and use page 0x83 if found, else page 0x80 if found, else nothing.
Page pre-spc3-83 should only be utilized for those scsi devices which are not compliant with the SPC-2 or SPC-3 format for page 83. While this option is used for older model 4, 5, and 6 EMC Symmetrix devices, its use with SPC-2 or SPC-3 compliant devices will fallback to the page 83 format supported by these devices.
If scsi_id is invoked with one argument without a leading -, it assumes it is called for a hotplug event, and looks for the sysfs device in the DEVPATH environment variable. This mode is deprecated, but available for backwards compatibility.
If the DEVPATH environment variable is set, scsi_id assumes it has been invoked via udev (or some other hotplug program), and all errors or warnings are sent using syslog.
To determine the specific value needed in a RESULT key, use the -s option, for example:
/sbin/scsi_id -s /block/sda
scsi_id is one of the tools used in the "Linux Persistent Device Names" scheme that creates persistent device links in /dev/disk. It is called with the -x option which will print all values in a defined format to let udev import it into its own environment for later event processing.
An example custom udev rule using scsi_id, that will name a block device and any partitions for the device matching the scsi_id output of 312345:
BUS=="scsi", PROGRAM=="/sbin/scsi_id -d %N -s %p", RESULT=="312345", NAME="disk%n"
/etc/scsi_id.config configuration and black/white list entries