1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-06-17 00:07:37 +02:00

initial lspci parser

This commit is contained in:
Kelly Brazil
2022-10-07 13:06:20 -07:00
parent 10fc8cb48d
commit 81aa09a2e2
5 changed files with 1048 additions and 0 deletions

View File

@ -66,6 +66,7 @@ parsers = [
'lsblk', 'lsblk',
'lsmod', 'lsmod',
'lsof', 'lsof',
'lspci',
'lsusb', 'lsusb',
'm3u', 'm3u',
'mdadm', 'mdadm',

132
jc/parsers/lspci.py Normal file
View File

@ -0,0 +1,132 @@
"""jc - JSON Convert `lspci -mmv` command output parser
This parser supports the following `lspci` options:
- `-mmv`
- `-nmmv`
- `-nnmmv`
Usage (cli):
$ lspci -nnmmv | jc --lspci
or
$ jc lspci -nnmmv
Usage (module):
import jc
result = jc.parse('lspci', lspci_command_output)
Schema:
[
{
"lspci": string,
"bar": boolean,
"baz": integer
}
]
Examples:
$ lspci | jc --lspci -p
[]
$ lspci | jc --lspci -p -r
[]
"""
import re
from typing import List, Dict
import jc.utils
class info():
"""Provides parser metadata (version, author, etc.)"""
version = '1.0'
description = '`lspci -mmv` command parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
compatible = ['linux']
magic_commands = ['lspci']
__version__ = info.version
def _process(proc_data: List[Dict]) -> List[Dict]:
"""
Final processing to conform to the schema.
Parameters:
proc_data: (List of Dictionaries) raw structured data to process
Returns:
List of Dictionaries. Structured to conform to the schema.
"""
return proc_data
def parse(
data: str,
raw: bool = False,
quiet: bool = False
) -> List[Dict]:
"""
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
"""
jc.utils.compatibility(__name__, info.compatible, quiet)
jc.utils.input_type_check(data)
raw_output: List = []
device_output: Dict = {}
if jc.utils.has_data(data):
item_id_p = re.compile(r'(?P<id>^[0-9a-f]{4}$)')
item_id_bracket_p = re.compile(r' \[(?P<id>[0-9a-f]{4})\]$')
for line in filter(None, data.splitlines()):
if line.startswith('Slot:'):
if device_output:
raw_output.append(device_output)
device_output = {}
device_output['Slot'] = line.split()[1]
continue
key, val = line.split(maxsplit=1)
key = key[:-1]
# numeric only (-nmmv)
if item_id_p.match(val):
device_output[key + '_id'] = val
continue
# string and numeric (-nnmmv)
if item_id_bracket_p.search(val):
string, idnum = val.rsplit(maxsplit=1)
device_output[key] = string
device_output[key + '_id'] = idnum[1:-1]
continue
# string only (-mmv)
device_output[key] = val
continue
if device_output:
raw_output.append(device_output)
return raw_output if raw else _process(raw_output)

View File

@ -0,0 +1,305 @@
Slot: 00:00.0
Class: Host bridge
Vendor: Intel Corporation
Device: 440BX/ZX/DX - 82443BX/ZX/DX Host bridge
SVendor: VMware
SDevice: Virtual Machine Chipset
Rev: 01
Slot: 00:01.0
Class: PCI bridge
Vendor: Intel Corporation
Device: 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge
Rev: 01
Slot: 00:07.0
Class: ISA bridge
Vendor: Intel Corporation
Device: 82371AB/EB/MB PIIX4 ISA
SVendor: VMware
SDevice: Virtual Machine Chipset
Rev: 08
Slot: 00:07.1
Class: IDE interface
Vendor: Intel Corporation
Device: 82371AB/EB/MB PIIX4 IDE
SVendor: VMware
SDevice: Virtual Machine Chipset
Rev: 01
ProgIf: 8a
Slot: 00:07.3
Class: Bridge
Vendor: Intel Corporation
Device: 82371AB/EB/MB PIIX4 ACPI
SVendor: VMware
SDevice: Virtual Machine Chipset
Rev: 08
Slot: 00:07.7
Class: System peripheral
Vendor: VMware
Device: Virtual Machine Communication Interface
SVendor: VMware
SDevice: Virtual Machine Communication Interface
Rev: 10
Slot: 00:0f.0
Class: VGA compatible controller
Vendor: VMware
Device: SVGA II Adapter
SVendor: VMware
SDevice: SVGA II Adapter
Slot: 00:10.0
Class: SCSI storage controller
Vendor: Broadcom / LSI
Device: 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI
SVendor: VMware
SDevice: LSI Logic Parallel SCSI Controller
Rev: 01
Slot: 00:11.0
Class: PCI bridge
Vendor: VMware
Device: PCI bridge
Rev: 02
ProgIf: 01
Slot: 00:15.0
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:15.1
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:15.2
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:15.3
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:15.4
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:15.5
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:15.6
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:15.7
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:16.0
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:16.1
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:16.2
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:16.3
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:16.4
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:16.5
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:16.6
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:16.7
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:17.0
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:17.1
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:17.2
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:17.3
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:17.4
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:17.5
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:17.6
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:17.7
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:18.0
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:18.1
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:18.2
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:18.3
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:18.4
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:18.5
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:18.6
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 00:18.7
Class: PCI bridge
Vendor: VMware
Device: PCI Express Root Port
Rev: 01
Slot: 02:00.0
Class: USB controller
Vendor: VMware
Device: USB1.1 UHCI Controller
SVendor: VMware
SDevice: USB1.1 UHCI Controller
PhySlot: 32
Slot: 02:01.0
Class: Ethernet controller
Vendor: Intel Corporation
Device: 82545EM Gigabit Ethernet Controller (Copper)
SVendor: VMware
SDevice: PRO/1000 MT Single Port Adapter
PhySlot: 33
Rev: 01
Slot: 02:02.0
Class: Multimedia audio controller
Vendor: Ensoniq
Device: ES1371/ES1373 / Creative Labs CT2518
SVendor: Ensoniq
SDevice: Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI]
PhySlot: 34
Rev: 02
Slot: 02:03.0
Class: USB controller
Vendor: VMware
Device: USB2 EHCI Controller
SVendor: VMware
SDevice: USB2 EHCI Controller
PhySlot: 35
ProgIf: 20
Slot: 02:05.0
Class: SATA controller
Vendor: VMware
Device: SATA AHCI controller
SVendor: VMware
SDevice: SATA AHCI controller
PhySlot: 37
ProgIf: 01

View File

@ -0,0 +1,305 @@
Slot: 00:00.0
Class: 0600
Vendor: 8086
Device: 7190
SVendor: 15ad
SDevice: 1976
Rev: 01
Slot: 00:01.0
Class: 0604
Vendor: 8086
Device: 7191
Rev: 01
Slot: 00:07.0
Class: 0601
Vendor: 8086
Device: 7110
SVendor: 15ad
SDevice: 1976
Rev: 08
Slot: 00:07.1
Class: 0101
Vendor: 8086
Device: 7111
SVendor: 15ad
SDevice: 1976
Rev: 01
ProgIf: 8a
Slot: 00:07.3
Class: 0680
Vendor: 8086
Device: 7113
SVendor: 15ad
SDevice: 1976
Rev: 08
Slot: 00:07.7
Class: 0880
Vendor: 15ad
Device: 0740
SVendor: 15ad
SDevice: 0740
Rev: 10
Slot: 00:0f.0
Class: 0300
Vendor: 15ad
Device: 0405
SVendor: 15ad
SDevice: 0405
Slot: 00:10.0
Class: 0100
Vendor: 1000
Device: 0030
SVendor: 15ad
SDevice: 1976
Rev: 01
Slot: 00:11.0
Class: 0604
Vendor: 15ad
Device: 0790
Rev: 02
ProgIf: 01
Slot: 00:15.0
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:15.1
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:15.2
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:15.3
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:15.4
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:15.5
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:15.6
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:15.7
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:16.0
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:16.1
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:16.2
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:16.3
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:16.4
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:16.5
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:16.6
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:16.7
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:17.0
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:17.1
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:17.2
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:17.3
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:17.4
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:17.5
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:17.6
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:17.7
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:18.0
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:18.1
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:18.2
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:18.3
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:18.4
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:18.5
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:18.6
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 00:18.7
Class: 0604
Vendor: 15ad
Device: 07a0
Rev: 01
Slot: 02:00.0
Class: 0c03
Vendor: 15ad
Device: 0774
SVendor: 15ad
SDevice: 1976
PhySlot: 32
Slot: 02:01.0
Class: 0200
Vendor: 8086
Device: 100f
SVendor: 15ad
SDevice: 0750
PhySlot: 33
Rev: 01
Slot: 02:02.0
Class: 0401
Vendor: 1274
Device: 1371
SVendor: 1274
SDevice: 1371
PhySlot: 34
Rev: 02
Slot: 02:03.0
Class: 0c03
Vendor: 15ad
Device: 0770
SVendor: 15ad
SDevice: 0770
PhySlot: 35
ProgIf: 20
Slot: 02:05.0
Class: 0106
Vendor: 15ad
Device: 07e0
SVendor: 15ad
SDevice: 07e0
PhySlot: 37
ProgIf: 01

View File

@ -0,0 +1,305 @@
Slot: 00:00.0
Class: Host bridge [0600]
Vendor: Intel Corporation [8086]
Device: 440BX/ZX/DX - 82443BX/ZX/DX Host bridge [7190]
SVendor: VMware [15ad]
SDevice: Virtual Machine Chipset [1976]
Rev: 01
Slot: 00:01.0
Class: PCI bridge [0604]
Vendor: Intel Corporation [8086]
Device: 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge [7191]
Rev: 01
Slot: 00:07.0
Class: ISA bridge [0601]
Vendor: Intel Corporation [8086]
Device: 82371AB/EB/MB PIIX4 ISA [7110]
SVendor: VMware [15ad]
SDevice: Virtual Machine Chipset [1976]
Rev: 08
Slot: 00:07.1
Class: IDE interface [0101]
Vendor: Intel Corporation [8086]
Device: 82371AB/EB/MB PIIX4 IDE [7111]
SVendor: VMware [15ad]
SDevice: Virtual Machine Chipset [1976]
Rev: 01
ProgIf: 8a
Slot: 00:07.3
Class: Bridge [0680]
Vendor: Intel Corporation [8086]
Device: 82371AB/EB/MB PIIX4 ACPI [7113]
SVendor: VMware [15ad]
SDevice: Virtual Machine Chipset [1976]
Rev: 08
Slot: 00:07.7
Class: System peripheral [0880]
Vendor: VMware [15ad]
Device: Virtual Machine Communication Interface [0740]
SVendor: VMware [15ad]
SDevice: Virtual Machine Communication Interface [0740]
Rev: 10
Slot: 00:0f.0
Class: VGA compatible controller [0300]
Vendor: VMware [15ad]
Device: SVGA II Adapter [0405]
SVendor: VMware [15ad]
SDevice: SVGA II Adapter [0405]
Slot: 00:10.0
Class: SCSI storage controller [0100]
Vendor: Broadcom / LSI [1000]
Device: 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI [0030]
SVendor: VMware [15ad]
SDevice: LSI Logic Parallel SCSI Controller [1976]
Rev: 01
Slot: 00:11.0
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI bridge [0790]
Rev: 02
ProgIf: 01
Slot: 00:15.0
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:15.1
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:15.2
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:15.3
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:15.4
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:15.5
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:15.6
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:15.7
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:16.0
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:16.1
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:16.2
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:16.3
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:16.4
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:16.5
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:16.6
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:16.7
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:17.0
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:17.1
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:17.2
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:17.3
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:17.4
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:17.5
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:17.6
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:17.7
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:18.0
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:18.1
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:18.2
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:18.3
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:18.4
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:18.5
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:18.6
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 00:18.7
Class: PCI bridge [0604]
Vendor: VMware [15ad]
Device: PCI Express Root Port [07a0]
Rev: 01
Slot: 02:00.0
Class: USB controller [0c03]
Vendor: VMware [15ad]
Device: USB1.1 UHCI Controller [0774]
SVendor: VMware [15ad]
SDevice: USB1.1 UHCI Controller [1976]
PhySlot: 32
Slot: 02:01.0
Class: Ethernet controller [0200]
Vendor: Intel Corporation [8086]
Device: 82545EM Gigabit Ethernet Controller (Copper) [100f]
SVendor: VMware [15ad]
SDevice: PRO/1000 MT Single Port Adapter [0750]
PhySlot: 33
Rev: 01
Slot: 02:02.0
Class: Multimedia audio controller [0401]
Vendor: Ensoniq [1274]
Device: ES1371/ES1373 / Creative Labs CT2518 [1371]
SVendor: Ensoniq [1274]
SDevice: Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI] [1371]
PhySlot: 34
Rev: 02
Slot: 02:03.0
Class: USB controller [0c03]
Vendor: VMware [15ad]
Device: USB2 EHCI Controller [0770]
SVendor: VMware [15ad]
SDevice: USB2 EHCI Controller [0770]
PhySlot: 35
ProgIf: 20
Slot: 02:05.0
Class: SATA controller [0106]
Vendor: VMware [15ad]
Device: SATA AHCI controller [07e0]
SVendor: VMware [15ad]
SDevice: SATA AHCI controller [07e0]
PhySlot: 37
ProgIf: 01