Ajuda grepping para PCI ID - String como esta [10de: 1c81]

1

Estou tentando configurar o script para PCI GPU Passthrough w / KVM no Linux. Você precisa encontrar o ID do dispositivo pci através do seguinte,

root@kvmatrix:~# lspci -nn | grep VGA | grep NVIDIA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107 [GeForce GTX 1050] [10de:1c81] (rev a1)

Gostaria de adicionar outro "grep" para apenas resultar nesta parte,

10de:1c81
    
por FreeSoftwareServers 01.03.2018 / 02:27

3 respostas

1

Tente isto:

lspci -nn  | grep -oP 'VGA.*NVIDIA.*\[\K[\w:]+'

ou mais portátil (alguns sistemas operacionais Linux antigos não têm -P switch)

lspci -nn  | perl -lne 'print $& if /VGA.*NVIDIA.*\[\K[\w:]+/'

Saída:

10de:1c81

LiveDemo com explicações à direita

    
por 01.03.2018 / 02:33
2

Se você sabe que classe de dispositivo deseja obter, provavelmente é mais fácil usá-lo. Nesse caso, "controlador VGA" é a classe 0300 , então você pode dizer a lspci para fornecer apenas informações sobre eles:

$ lspci -nd::0300|egrep -o "[[:xdigit:]]{4}:[[:xdigit:]]{4}"

Esta é uma pesquisa de egrep , então você também pode usar grep -E . Como há apenas um item que corresponderá a xxxx:xxxx ( x sendo um dígito hexadecimal), foi isso que eu combinei.

Se você tivesse várias placas de vídeo que correspondessem e quisesse apenas a nVidia, você poderá fazer lspci -nd10de::0300 para restringi-la somente a esse fornecedor.

    
por 01.03.2018 / 07:22
0

Usando discover : utilitário de detecção de hardware

discover --vendor-id --model-id pci | grep NVIDIA | uniq | awk '{print $1":"$2}'

exemplo de saída:

10de:1c81
    
por 02.03.2018 / 16:00

Tags