質問

Linux&CでSCSIデバイスのベンダー名を取得するにはどうすればよいですか?

役に立ちましたか?

解決

使用できます Libudev SCSIデバイスを見つけて、ベンダー属性(テストされていない)を読むには:

struct udev *context = udev_new();
struct udev_enumerate *enumerator = udev_enumerate_new(context);
udev_enumerate_add_match_subsystem(enumerator, "scsi");
udev_enumerate_scan_devices(enumerator);
struct udev_list_entry *scsi_devices = udev_enumerate_get_list_entry(enumerator);
struct udev_list_entry *current = 0;
udev_list_entry_foreach(current, scsi_devices) {
    struct udev_device *device = udev_device_new_from_syspath(
            context, udev_list_entry_get_name(current));
    const char *vendor = udev_device_get_sysattr_value(device, "vendor");
    printf("%s\n", vendor);
}

他のヒント

デバイス /バスIDがわかっている場合は、読み取り /sysファイルを調べることができます。 LSSCSI.

  -> cat /sys/bus/scsi/devices/target13:0:0/13:0:0:0/vendor 
Marvell

(1)SCSIデバイスを開く。 (2)IOCTLによってSCSIコマンド「照会」を送信します。その後、返されたデータからベンダー名を取得できます。

SG3_utilsパッケージには、SCSIコマンドをデバイスに送信するユーティリティが含まれています。

sg3_utilsをインストールしたら、興味のあるデバイスでsg_inqコマンドを実行します。

例:#SG_INQ /DEV /SDA

上記のコマンドは、デバイスで標準のSCSI照会を実行し、ベンダー名とその他の詳細を提供します。

SCSI SPC-3ドキュメントとSG3_utilsコマンドを参照してください。

1)発行コマンド:sg_inq -p 0x00 /dev /your_device_name

これにより、デバイスによるサポートされているページが提供されます。

2)上記のコマンドの場合、サポートされているページの1つとして0x83を表示します。コマンドを発行します。

sudo sg_inq -p 0x83 /dev /your_device_name

これにより、ベンダー情報が表示されます。

ps-> your_device_name eg sr1、sda1

このタイプの情報を取得するために、このリンクを使用してスクリプトを取得してください。

http://a-saurabh.blogspot.in/2014/06/sometimes-we-went-to-query-about-our.html

SG3_utilsなどのツールでSCSI照会を使用するか、SYS/BUS/SCSI/DEVICES/XXXXXで見つけることができます

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top