本發(fā)明涉及pcie外接卡信息的獲取,具體地說是一種在linux系統(tǒng)下自動獲取pcie外接卡信息的方法。
背景技術:
隨著時代的進步,互聯(lián)網(wǎng)的快速發(fā)展,人們生活水平的提高,計算機已經(jīng)成為人們不可或缺的一部分,無論是在工作、學習和生活中都離不開計算機,它存儲著重要的數(shù)據(jù),也可以進行復雜的計算。
linux是一個基于posix和unix的多用戶、多任務、支持多線程和多cpu的操作系統(tǒng)。它能運行主要的unix工具軟件、應用程序和網(wǎng)絡協(xié)議,支持32位和64位硬件。linux存在著許多不同的linux版本,但它們都使用了linux內(nèi)核,習慣用linux來形容整個基于linux內(nèi)核,并且使用gnu工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。
pci插槽是基于pci局部總線的擴展插槽,可插接顯卡、聲卡、網(wǎng)卡、內(nèi)置modem、內(nèi)置adslmodem、usb2.0卡、ieee1394卡、ide接口卡、raid卡、電視卡、視頻采集卡以及其它種類繁多的擴展卡。pci插槽是主板的主要擴展插槽,通過插接不同的擴展卡可以獲得目前電腦能實現(xiàn)的幾乎所有功能,目前一些主板上的pcie槽數(shù)量也是很多,當我們接入很多pcie卡子時,往往需要手動的去單個查看每一個pcie槽上的卡子信息,對于測試人員來說會浪費很多時間。
基于此,設計一種在linux系統(tǒng)下自動獲取pcie外接卡信息的方法,提高測試效率。
技術實現(xiàn)要素:
本發(fā)明的技術任務是解決現(xiàn)有技術的不足,提供一種在linux系統(tǒng)下自動獲取pcie外接卡信息的方法,通過自動查詢到每個pcie插槽上外接卡的信息,提高測試效率。
本發(fā)明的技術方案是按以下方式實現(xiàn)的:
一種在linux系統(tǒng)下自動獲取pcie外接卡信息的方法,該方法在linux系統(tǒng)下,通過dmidecode和lspci兩個命令來雙向對比busid來實現(xiàn)快速檢測pcie槽外接卡的信息。
一種在linux系統(tǒng)下自動獲取pcie外接卡信息的方法的具體步驟為:
?。┌惭blinux操作系統(tǒng);
ⅱ)通過dmidecode-t9命令查看到每一個pcie槽上的slot信息及busid信息;
ⅲ)提取slot信息及busid信息,查看外接卡信息;
ⅳ)通過步驟ⅲ)對應相同的busid信息,整合slot信息和外接卡信息后輸出;
ⅴ)將腳本內(nèi)存拷貝到linux的shell腳本中,并命名為pcie_info.sh,修改shell的屬性,執(zhí)行./pcie_info.sh,即可自動打印pcie所有外接卡信息。
步驟ⅱ中,在有外接卡時,會查詢到pcieslot信息和busaddress信息。
步驟ⅲ)中,進一步通過lspci來查看外接卡信息。
本發(fā)明的一種在linux系統(tǒng)下自動獲取pcie外接卡信息的方法與現(xiàn)有技術相比所產(chǎn)生的有益效果是:
本發(fā)明在linux系統(tǒng)下,通過dmidecode和lspci兩個命令來雙向對比busid,并進一步通過自動化腳本快速查詢到每個pcie插槽上外接卡的信息,實現(xiàn)快速檢測pcie槽外接卡信息,提高測試效率。
附圖說明
附圖1是本發(fā)明的具體流程圖。
具體實施方式
下面結合附圖1,對本發(fā)明的一種在linux系統(tǒng)下自動獲取pcie外接卡信息的方法作以下詳細說明。
如附圖1所示,本發(fā)明的一種在linux系統(tǒng)下自動獲取pcie外接卡信息的方法,該方法在linux系統(tǒng)下,通過dmidecode和lspci兩個命令來雙向對比busid來實現(xiàn)快速檢測pcie槽外接卡的信息。
該方法的具體步驟為:
?。┌惭blinux操作系統(tǒng);
ⅱ)通過dmidecode-t9命令查看到每一個pcie槽上的slot信息及busid信息;
ⅲ)提取slot信息及busid信息,查看外接卡信息;
ⅳ)通過步驟ⅲ)對應相同的busid信息,整合slot信息和外接卡信息后輸出;
ⅴ)將腳本內(nèi)存拷貝到linux的shell腳本中,并命名為pcie_info.sh,修改shell的屬性,執(zhí)行./pcie_info.sh,即可自動打印pcie所有外接卡信息。
步驟ⅱ中,在有外接卡時,會查詢到pcieslot信息和busaddress信息。
步驟ⅲ)中,進一步通過lspci來查看外接卡信息。
實現(xiàn)該方法的具體腳本如下:
#!/bin/bash
path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin
#
functionlink()
{
tmp=`lspci|grep$1`
if["$tmp"!=""];then
vendor_device=`lspci-n|grep$1|awk'nr==1{print$3}'`
cap_speed=`lspci-n-d$vendor_device-vvv|grepwidth|awk'nr==1'|cut-d,-f2`
cap_width=`lspci-n-d$vendor_device-vvv|grepwidth|awk'nr==1'|cut-d,-f3`
sta_speed=`lspci-n-d$vendor_device-vvv|grepwidth|awk'nr==2'|cut-d,-f1|cut-d''-f2`
sta_width=`lspci-n-d$vendor_device-vvv|grepwidth|awk'nr==2'|cut-d,-f2`
driver=`lspci-n-d$vendor_device-vvv|grepdriver|awk'nr==1'|cut-d:-f2`
echo-e"\033[34m**********************************\033[0m"
echo-e"\033[33mcap_speed:$cap_speed<<\033[0m"
echo-e"\033[33mcap_width:$cap_width<<\033[0m"
echo-e"\033[33msta_speed:speed$sta_speed<<\033[0m"
echo-e"\033[33msta_width:$sta_width<<\033[0m"
echo-e"\033[33mdriver:$driver\033[0m"
line=`lspci|grep$1|wc-l`
foriin$(seq1$line)
do
lspci|grep$1|awk"nr==$i"
done
echo-e"\033[34m**********************************\033[0m"
fi
}
#
functionget_buslist()
{
bus_list=`dmidecode-t9|grepaddress|cut-d':'-f3`
foriin$bus_list
do
echo"$i:00"
done
}
#
functionpci2bus()
{
dmidecode-t9|grep-e'designation|address'>haha
key=`echo$1|awk-f':''{print$1}'`
nu=$((`cat-nhaha|grep$key:|cut-f1`-1))
value=`cathaha|awk"nr==$nu"|cut-d':'-f2`
echo-e"\033[41m>>>>>>$value<<<<<<\033[0m"
rm-rfhaha
}
############main###############
dmidecode-t9|grep-e'designation|address'>haha
forbusin`get_buslist`
do
pci=`lspci|grep$bus`
if["$pci"!=""];then
pci2bus$bus
link$bus
fi
echo
done
echo"=================================="
echo
############end###############
通過上面具體實施方式,所述技術領域的技術人員可容易的實現(xiàn)本發(fā)明。但是應當理解,本發(fā)明并不限于上述的具體實施方式。在公開的實施方式的基礎上,所述技術領域的技術人員可任意組合不同的技術特征,從而實現(xiàn)不同的技術方案。
除說明書所述的技術特征外,均為本專業(yè)技術人員的已知技術。