0
Home  ›  coding  ›  Python  ›  scanner

Mendapatkan Informasi Hardware Menggunakan Bahasa Python

 

Mendapatkan sebuah informasi dalam sebuah hardware dengan menggunakan python, kamu bisa melakukannya dengan menggunakan utilitas psutil yang berfungsi untuk memantau dan juga modul platfrom bawaan untuk mengekstrak informasi dan juga perangkat keras menggunakan python.

Untuk memulainya silahkan instal psutil menggunakan pip3.

pip3 install psutil

Memulai membuat programnya dengan mengimport modul yang akan di perlukan.

import psutil
import platform
from datetime import datetime
Kemudian kita akan membuat sebuah function yang akan mengconvert sejumlah besar byte menjadi format berskala (misalnya dalam kilo, mega, Giga, dll.):
def get_size(bytes, suffix="B"):
    """
    Scale bytes to its proper format
    e.g:
        1253656 => '1.20MB'
        1253656678 => '1.17GB'
    """
    factor = 1024
    for unit in ["", "K", "M", "G", "T", "P"]:
        if bytes < factor:
            return f"{bytes:.2f}{unit}{suffix}"
        bytes /= factor

Sistem informasi

Kamu membutuhkan platfrom module di sini.
print("="*40, "System Information", "="*40)
uname = platform.uname()
print(f"System: {uname.system}")
print(f"Node Name: {uname.node}")
print(f"Release: {uname.release}")
print(f"Version: {uname.version}")
print(f"Machine: {uname.machine}")
print(f"Processor: {uname.processor}")

Untuk bisa mendapatkan tanggal dan waktu ketika komputer melakukan boot.
# Boot Time
print("="*40, "Boot Time", "="*40)
boot_time_timestamp = psutil.boot_time()
bt = datetime.fromtimestamp(boot_time_timestamp)
print(f"Boot Time: {bt.year}/{bt.month}/{bt.day} {bt.hour}:{bt.minute}:{bt.second}")
Lalu kita juga bisa mendapatkan beberapa informasi CPU, seperti penggunaan core.
# let's print CPU information
print("="*40, "CPU Info", "="*40)
# number of cores
print("Physical cores:", psutil.cpu_count(logical=False))
print("Total cores:", psutil.cpu_count(logical=True))
# CPU frequencies
cpufreq = psutil.cpu_freq()
print(f"Max Frequency: {cpufreq.max:.2f}Mhz")
print(f"Min Frequency: {cpufreq.min:.2f}Mhz")
print(f"Current Frequency: {cpufreq.current:.2f}Mhz")
# CPU usage
print("CPU Usage Per Core:")
for i, percentage in enumerate(psutil.cpu_percent(percpu=True, interval=1)):
    print(f"Core {i}: {percentage}%")
print(f"Total CPU Usage: {psutil.cpu_percent()}%")
  1. Fungsi psutilcpu_count() mengembalikan jumlah inti, sedangkan cpu_freq() fungsi mengembalikan frekuensi CPU termasuknamedtuplefrekuensi saat ini, min, dan maks yang dinyatakan dalam Mhz, Anda dapat mengatur percpu=True untuk mendapatkan frekuensi per CPU.
  2. cpu_percent() metode mengembalikan float yang mewakili penggunaan CPU saat ini sebagai persentase, pengaturan intervalke 1 (detik) akan membandingkan waktu CPU sistem yang berlalu sebelum dan setelah satu detik, kami mengaturnya percpuuntuk Truemendapatkan penggunaan CPU dari setiap inti.

Penggunaan Memori

# Memory Information
print("="*40, "Memory Information", "="*40)
# get the memory details
svmem = psutil.virtual_memory()
print(f"Total: {get_size(svmem.total)}")
print(f"Available: {get_size(svmem.available)}")
print(f"Used: {get_size(svmem.used)}")
print(f"Percentage: {svmem.percent}%")
print("="*20, "SWAP", "="*20)
# get the swap memory details (if exists)
swap = psutil.swap_memory()
print(f"Total: {get_size(swap.total)}")
print(f"Free: {get_size(swap.free)}")
print(f"Used: {get_size(swap.used)}")
print(f"Percentage: {swap.percent}%")
  1. virtual_memory( Metode mengembalikan statistik tentang penggunaan memori sistem sebagai namedtuple, termasuk bidang seperti total(total memori fisik yang tersedia), available (memori yang tersedia, yaitu tidak digunakan), useddan percent (yaitu persentase). swap_memory() sama tetapi untuk memori swap.
  2. Gunakan get_size() fungsi yang telah ditentukan sebelumnya untuk mencetak nilai dalam skala, karena statistik ini dinyatakan dalam byte.

Pengunaan Disk

# Disk Information
print("="*40, "Disk Information", "="*40)
print("Partitions and Usage:")
# get all disk partitions
partitions = psutil.disk_partitions()
for partition in partitions:
    print(f"=== Device: {partition.device} ===")
    print(f"  Mountpoint: {partition.mountpoint}")
    print(f"  File system type: {partition.fstype}")
    try:
        partition_usage = psutil.disk_usage(partition.mountpoint)
    except PermissionError:
        # this can be catched due to the disk that
        # isn't ready
        continue
    print(f"  Total Size: {get_size(partition_usage.total)}")
    print(f"  Used: {get_size(partition_usage.used)}")
    print(f"  Free: {get_size(partition_usage.free)}")
    print(f"  Percentage: {partition_usage.percent}%")
# get IO statistics since boot
disk_io = psutil.disk_io_counters()
print(f"Total read: {get_size(disk_io.read_bytes)}")
print(f"Total write: {get_size(disk_io.write_bytes)}")
Informasi Jaringan
# Network information
print("="*40, "Network Information", "="*40)
# get all network interfaces (virtual and physical)
if_addrs = psutil.net_if_addrs()
for interface_name, interface_addresses in if_addrs.items():
    for address in interface_addresses:
        print(f"=== Interface: {interface_name} ===")
        if str(address.family) == 'AddressFamily.AF_INET':
            print(f"  IP Address: {address.address}")
            print(f"  Netmask: {address.netmask}")
            print(f"  Broadcast IP: {address.broadcast}")
        elif str(address.family) == 'AddressFamily.AF_PACKET':
            print(f"  MAC Address: {address.address}")
            print(f"  Netmask: {address.netmask}")
            print(f"  Broadcast MAC: {address.broadcast}")
# get IO statistics since boot
net_io = psutil.net_io_counters()
print(f"Total Bytes Sent: {get_size(net_io.bytes_sent)}")
print(f"Total Bytes Received: {get_size(net_io.bytes_recv)}")
Fungsi ini net_if_addrs() mengembalikan alamat yang terkait dengan setiap kartu antarmuka jaringan yang diinstal pada sistem.  disk_usage() fungsi mengembalikan statistik penggunaan disk sebagai namedtuple, termasuk total, useddan freeruang yang dinyatakan dalam byte.
./X3NUX
Mereka teralu banyak mengusik, maka bunuh dan dan matilah sekarang juga!!!!
Post a Comment
Search
Menu
Theme
Share
Additional JS