Jak sprawdzić rodzaj pamięci RAM pod Linux z użyciem Pythona.
To jest kontynuacja wpisu: Sprawdzanie pod Linux rodzaju pamięci RAM
Konsolowe programy podające rodzaj kości RAM w Linux można wykorzystać w Pythonie z użycie os.system()
albo subprocess
ale akurat programy dmidecode
i osquery
mają już gotowe moduły w Pythonie.
UWAGA: Ponieważ normalnie informacje o kościach wymagają uprawnień administratora więc skrypty należy uruchamiać z użyciem sudo
$ sudo python skrypt.py
dmidecode
Są dwa moduły dla dmidecode
ale mnie interesuje py-dmidecode
Instalacja:
$ pip install py-dmidecode
Odpowiednikiem
$ sudo dmidecode --type 17
może być
import dmidecode
import pprint
data = dmidecode.get_by_type(17)
pprint.pprint(data)
Ponieważ moduł dostarcza dane w postaci listy ze słownikami więc łatwo można wyświetlić tylko wybrane informacje:
import dmidecode
data = dmidecode.get_by_type(17)
for item in data:
size = item['Size']
if size != 'No Module Installed': # pominięcie pustych banków
print(item['Form Factor'], item['Type'], size, item['Speed'])
Ponieważ mam dwie kości RAM i odfiltrowałem puste banki więc dostałem wynik w postaci:
SODIMM DDR3 4096 MB 1334 MT/s
SODIMM DDR3 4096 MB 1334 MT/s
osquery
Dla osquery
jest tylko jeden moduł Pythona i to stworzony przez twórców osquery
czyli przez Facebook.
Instalacja:
$ pip install osquery
Odpowiednikiem
$ sudo osqueryi 'SELECT * FROM memory_devices'
może być (tyle, że zamiast tabeli otrzymamy listę słowników)
import osquery
import pprint
instance = osquery.SpawnInstance()
instance.open()
data = instance.client.query('SELECT * FROM memory_devices')
pprint.pprint(data.response)
Ponieważ ten moduł także dostarcza dane w postaci listy ze słownikami więc i tu łatwo można wyświetlić tylko wybrane informacje:
import osquery
instance = osquery.SpawnInstance()
instance.open()
data = instance.client.query('SELECT * FROM memory_devices')
for item in data.response:
size = item['size']
if size != '0': # pominięcie pustych banków
print(item['form_factor'], item['memory_type'], size, item['max_speed'])
Otrzymuję wynik podobny do poprzedniego
SODIMM DDR3 4096 1334
SODIMM DDR3 4096 1334
Buy a Coffee