{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Führen Sie in einem Jupyter Notebook die folgenden Aufgaben durch:\n", "\n", ">Laden Sie die Datei lshw.xml.\n", ">Lesen Sie sich die Datei durch, um den Aufbau kennenzulernen. Geben Sie dazu diese im Notebook aus.\n", "Beantworten Sie die folgenden Fragen mittels der Verwendung von XPath:\n", "- Wie groß ist der Systemspeicher?\n", "- Wie heißt der Prozessor, der im Einsatz ist?\n", "- Welche IO-Ports verwendet die IDE-Schnittstelle?\n", "- Wie heißt das Gerät, das die Fähigkeit für Audio CD playback mitbringt?\n", "- Unter welchen handles sind die Geräte zu finden, die mit einem Icon disc dargestellt werden?" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "from lxml import etree\n", "from pathlib import Path\n", "\n", "path = Path(\"lshw.xml\")\n", "\n", "tree = etree.parse(str(path), etree.XMLParser(recover=True))\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "\n", "\n", "\n", "\n", " \n", " Computer\n", " VirtualBox\n", " innotek GmbH\n", " 1.2\n", " 0\n", " 64\n", " \n", " \n", " \n", " \n", " \n", " SMBIOS version 2.5\n", " DMI version 2.5\n", " 32-bit processes\n", " \n", " \n", " Motherboard\n", " VirtualBox\n", " Oracle Corporation\n", " 0\n", " 1.2\n", " 0\n", " \n", " \n", " \n", " \n", " BIOS\n", " innotek GmbH\n", " 0\n", " VirtualBox\n", " 12/01/2006\n", " 131072\n", " 131072\n", " \n", " ISA bus\n", " PCI bus\n", " Booting from CD-ROM/DVD\n", " Selectable boot path\n", " i8042 keyboard controller\n", " INT10 CGA/Mono video\n", " ACPI\n", " \n", " \n", " \n", " \n", " \n", " \n", " System memory\n", " 1\n", " 4294967296\n", " \n", " \n", " \n", " \n", " \n", " Intel(R) Core(TM) i5-8365U CPU @ 1.60GHz\n", " Intel Corp.\n", " 2\n", " cpu@0\n", " 64\n", " \n", " mathematical co-processor\n", " FPU exceptions reporting\n", " \n", " virtual mode extensions\n", " debugging extensions\n", " page size extensions\n", " time stamp counter\n", " model-specific registers\n", " 4GB+ memory addressing (Physical Address Extension)\n", " machine check exceptions\n", " compare and exchange 8-byte\n", " on-chip advanced programmable interrupt controller (APIC)\n", " fast system calls\n", " memory type range registers\n", " page global enable\n", " machine check architecture\n", " conditional move instruction\n", " page attribute table\n", " 36-bit page size extensions\n", " \n", " multimedia extensions (MMX)\n", " fast floating point save/restore\n", " streaming SIMD extensions (SSE)\n", " streaming SIMD extensions (SSE2)\n", " HyperThreading\n", " fast system calls\n", " no-execute bit (NX)\n", " \n", " 64bits extensions (x86-64)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " Host bridge\n", " 440FX - 82441FX PMC [Natoma]\n", " Intel Corporation\n", " 100\n", " pci@0000:00:00.0\n", " 02\n", " 32\n", " 33000000\n", " \n", " \n", " \n", " \n", " \n", " \n", " ISA bridge\n", " 82371SB PIIX3 ISA [Natoma/Triton II]\n", " Intel Corporation\n", " 1\n", " pci@0000:00:01.0\n", " 00\n", " 32\n", " 33000000\n", " \n", " \n", " \n", " \n", " \n", " bus mastering\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " IDE interface\n", " 82371AB/EB/MB PIIX4 IDE\n", " Intel Corporation\n", " 1.1\n", " pci@0000:00:01.1\n", " scsi2\n", " 01\n", " 32\n", " 33000000\n", " \n", " \n", " \n", " \n", " \n", " \n", " ISA compatibility mode\n", " PCI native mode\n", " bus mastering\n", " Emulated device\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " DVD reader\n", " CD-ROM\n", " VBOX\n", " 0.0.0\n", " scsi@2:0.0.0\n", " /dev/cdrom\n", " /dev/dvd\n", " /dev/sr0\n", " 11:0\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " support is removable\n", " Audio CD playback\n", " DVD playback\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " VGA compatible controller\n", " SVGA II Adapter\n", " VMware\n", " 2\n", " SVGA II Adapter\n", " VMware\n", " pci@0000:00:02.0\n", " 00\n", " 32\n", " 33000000\n", " \n", " \n", " \n", " \n", " \n", " \n", " bus mastering\n", " extension ROM\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " Ethernet interface\n", " 82540EM Gigabit Ethernet Controller\n", " Intel Corporation\n", " 3\n", " Intel Corporation\n", " Intel Corporation\n", " pci@0000:00:03.0\n", " enp0s3\n", " 02\n", " 08:00:27:c2:4b:5f\n", " 1000000000\n", " 1000000000\n", " 32\n", " 66000000\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " Power Management\n", " PCI-X\n", " bus mastering\n", " PCI capabilities listing\n", " \n", " Physical interface\n", " twisted pair\n", " 10Mbit/s\n", " 10Mbit/s (full duplex)\n", " 100Mbit/s\n", " 100Mbit/s (full duplex)\n", " 1Gbit/s (full duplex)\n", " Auto-negotiation\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " System peripheral\n", " VirtualBox Guest Service\n", " InnoTek Systemberatung GmbH\n", " 4\n", " pci@0000:00:04.0\n", " 00\n", " 32\n", " 33000000\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " Multimedia audio controller\n", " 82801AA AC'97 Audio Controller\n", " Intel Corporation\n", " 5\n", " Dell\n", " Dell\n", " pci@0000:00:05.0\n", " 01\n", " 32\n", " 33000000\n", " \n", " \n", " \n", " \n", " \n", " bus mastering\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " USB controller\n", " KeyLargo/Intrepid USB\n", " Apple Inc.\n", " 6\n", " pci@0000:00:06.0\n", " 00\n", " 32\n", " 33000000\n", " \n", " \n", " \n", " \n", " \n", " Open Host Controller Interface\n", " bus mastering\n", " PCI capabilities listing\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " OHCI PCI host controller\n", " Linux 5.10.0-8-amd64 ohci_hcd\n", " 1\n", " usb@2\n", " usb2\n", " 5.10\n", " \n", " \n", " \n", " \n", " \n", " \n", " USB 1.1\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " Human interface device\n", " USB Tablet\n", " VirtualBox\n", " 1\n", " usb@2:1\n", " 1.00\n", " \n", " \n", " \n", " \n", " \n", " \n", " USB 1.1\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " Bridge\n", " 82371AB/EB/MB PIIX4 ACPI\n", " Intel Corporation\n", " 7\n", " pci@0000:00:07.0\n", " 08\n", " 32\n", " 33000000\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " USB controller\n", " 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller\n", " Intel Corporation\n", " b\n", " pci@0000:00:0b.0\n", " 00\n", " 32\n", " 33000000\n", " \n", " \n", " \n", " \n", " \n", " Enhanced Host Controller Interface (USB2)\n", " bus mastering\n", " PCI capabilities listing\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " EHCI Host Controller\n", " Linux 5.10.0-8-amd64 ehci_hcd\n", " 1\n", " usb@1\n", " usb1\n", " 5.10\n", " \n", " \n", " \n", " \n", " \n", " \n", " USB 2.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " SATA controller\n", " 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode]\n", " Intel Corporation\n", " d\n", " pci@0000:00:0d.0\n", " scsi1\n", " 02\n", " 32\n", " 33000000\n", " \n", " \n", " \n", " \n", " \n", " \n", " Power Management\n", " \n", " bus mastering\n", " PCI capabilities listing\n", " Emulated device\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " ATA Disk\n", " VBOX HARDDISK\n", " VirtualBox\n", " 0.0.0\n", " scsi@1:0.0.0\n", " /dev/sda\n", " 8:0\n", " 1.0\n", " VBcadb6a8f-4948994b\n", " 8589934592\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " Partitioned disk\n", " MS-DOS partition table\n", " \n", " \n", " \n", " \n", " \n", " EXT4 volume\n", " Linux\n", " 1\n", " scsi@1:0.0.0,1\n", " /dev/sda1\n", " /\n", " 8:1\n", " 1.0\n", " 1f61f5be-81fb-4a02-933d-989be3bb93de\n", " 7564427264\n", " 7564427264\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " Primary partition\n", " Bootable partition (active)\n", " \n", " Extended Attributes\n", " 4GB+ files\n", " 16TB+ files\n", " directories with 65000+ subdirs\n", " 64bit filesystem\n", " extent-based allocation\n", " \n", " EXT2/EXT3\n", " initialized volume\n", " \n", " \n", " \n", " \n", " \n", " \n", " Extended partition\n", " 2\n", " scsi@1:0.0.0,2\n", " /dev/sda2\n", " 8:2\n", " 1022362624\n", " 1022362624\n", " \n", " Primary partition\n", " Extended partition\n", " Partitioned disk\n", " Extended partition\n", " \n", " \n", " Linux swap volume\n", " 5\n", " /dev/sda5\n", " 8:5\n", " 1\n", " c14de98d-98f3-4f77-8602-094f4060366f\n", " 1022361600\n", " 1022361600\n", " \n", " \n", " \n", " \n", " \n", " No filesystem\n", " Linux swap\n", " initialized volume\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " PnP device PNP0303\n", " 3\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " PnP device PNP0f03\n", " 4\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ] } ], "source": [ "with open(path, \"r\") as f:\n", " print(f.read())" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "# --------------------------------------------------\n", "# Systemeigenschaften\n", "# --------------------------------------------------\n", "mem_size_bytes = int(\n", " tree.xpath(\"//node[@class='memory'][description='System memory']/size/text()\")[0]\n", ")\n", "mem_size_gib = mem_size_bytes / 2**30\n", "\n", "processor_name = tree.xpath(\"//node[@class='processor']/product/text()\")[0]\n", "\n", "io_ports_ide = tree.xpath(\n", " \"//node[@id='ide']//resources/resource[@type='ioport']/@value\"\n", ")\n", "\n", "device_audio_node = tree.xpath(\"//capability[@id='audio']/ancestor::node[1]\")[0]\n", "device_audio_name = (\n", " device_audio_node.xpath(\"description/text()\")\n", " or device_audio_node.xpath(\"product/text()\")\n", ")[0]\n", "device_audio_handle = device_audio_node.get(\"handle\")\n", "\n", "disc_handles = [\n", " node.get(\"handle\")\n", " for node in tree.xpath(\"//hint[@name='icon'][@value='disc']/ancestor::node[1]\")\n", " if node.get(\"handle\")\n", "]" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Systemspeicher: 4.00 GiB\n", "Prozessor: Intel(R) Core(TM) i5-8365U CPU @ 1.60GHz\n", "IDE-IO-Ports: 1f0(size=8), 3f6, 170(size=8), 376, d000(size=16)\n", "Audio-Gerät: DVD reader (Handle: SCSI:02:00:00:00)\n", "Handles mit Icon 'disc':\n", " • PCI:0000:00:01.1\n", " • PCI:0000:00:0d.0\n", " • SCSI:01:00:00:00\n" ] } ], "source": [ "# --------------------------------------------------\n", "# Ergebnisse\n", "# --------------------------------------------------\n", "print(f\"Systemspeicher: {mem_size_gib:.2f} GiB\")\n", "print(f\"Prozessor: {processor_name}\")\n", "print(f\"IDE-IO-Ports: {', '.join(io_ports_ide)}\")\n", "print(f\"Audio-Gerät: {device_audio_name} (Handle: {device_audio_handle})\")\n", "print(\"Handles mit Icon 'disc':\")\n", "for h in disc_handles:\n", " print(\" •\", h)\n" ] } ], "metadata": { "kernelspec": { "display_name": ".venv (3.13.3)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.3" } }, "nbformat": 4, "nbformat_minor": 2 }