[英]How to read HD serial in Linux without root privileges?
我正在構建一個需要讀取HD序列的C / C ++程序。 我知道如果我運行這些命令:
hdparm -i /dev/sda | grep -i serial
/sbin/udevadm info --query=property --name=sda | grep "ID_SERIAL"
我可以得到它,第一個需要root權限,但第二個不需要。
但是,我的應用程序無法訪問外部程序,並且它不能要求root權限,那么是否有一個C / C ++ linux庫具有返回HD序列的功能? 或者有沒有其他方法不需要運行程序?
只需列出/dev/disk/by-id/
目錄,即可獲得系統上所有塊設備的ID。 輸出與命令不完全相同,但它足夠接近。
為此,您不需要root權限。
在我的電腦上:
$ /sbin/udevadm info --query=property --name=sda | grep "ID_SERIAL"
ID_SERIAL=WDC_WD5000AAKX-60U6AA0_WD-WCC2EHJ93860
ID_SERIAL_SHORT=WD-WCC2EHJ93860
和
$ ll /dev/disk/by-id/ | grep sda
lrwxrwxrwx 1 root root 9 Nov 11 07:47 ata-WDC_WD5000AAKX-60U6AA0_WD-WCC2EHJ93860 -> ../../sda
lrwxrwxrwx 1 root root 10 Nov 11 07:47 ata-WDC_WD5000AAKX-60U6AA0_WD-WCC2EHJ93860-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Nov 11 07:47 ata-WDC_WD5000AAKX-60U6AA0_WD-WCC2EHJ93860-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Nov 11 07:47 ata-WDC_WD5000AAKX-60U6AA0_WD-WCC2EHJ93860-part3 -> ../../sda3
您可以使用ioctls訪問硬盤驅動器信息,就像hdparm一樣。 HDIO_GET_IDENTITY
ioctl應該足以滿足您的需求。 它返回一個結構,其中(IIRC)包括序列號; 谷歌搜索應該可以幫助您找到結構定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.