Napisać program wyświetlający zmienne środowiskowe danego procesu.
#!/usr/bin/env python3
"""Napisać program wyświetlający zmienne środowiskowe danego procesu."""
import sys
def get_proc_env(pid: int) -> dict:
"""Get ENV vars for given pid"""
path = f'/proc/{pid}/environ'
with open(path, 'rb') as file:
data = file.read()
envvars = data.split(b'\x00')
result = {}
for envvar in envvars:
name, _, value = envvar.decode().partition('=')
if name == '':
continue
result[name] = value
return result
def main():
"""Main"""
pids = [int(p) for p in sys.argv[1:]]
if len(pids) == 0:
print(f"usage: {sys.argv[0]} PID [PID...]")
sys.exit(0)
for pid in pids:
print(f"=========== { pid } =============")
for k, v in get_proc_env(pid).items():
print(f" {k}: {v}")
if __name__ == "__main__":
main()
Napisać program podający adresy IP (v4 i v6) danego interfejsu sieciowego.
#!/usr/bin/env python3
"""Napisać program podający adresy IP (v4 i v6) danego interfejsu sieciowego."""
import subprocess
import re
...
Napisać program, rysujący wykres (ASCII lub ANSI) przedstawiający zmieniające się zużycie pamięci oraz obciążenie systemu.
Użyć danych z /proc/meminfo, /proc/loadavg
#!/usr/bin/env python3
"""Napisać program, rysujący wykres (ASCII lub ANSI) przedstawiający
zmieniające się zużycie pamięci oraz obciążenie systemu.
Użyć danych z /proc/meminfo, /proc/loadavg"""
...
Napisać program wyświetlający listę interfejsów sieciowych, ich prędkość, stan kabla oraz stan połączenia.
#!/usr/bin/env python3
"""Napisać program wyświetlający listę interfejsów sieciowych, ich prędkość, stan kabla oraz stan połączenia."""
from os import listdir
NET_PATH = '/sys/class/net'
def read_iface_param(interface: str, param_name: str) -> str:
"""Wczytaj własność interfejsu z pliku /sys/class/net/INTERFACE/NAZWA"""
path = f'{NET_PATH}/{interface}/{param_name}'
with open(path, 'r', encoding='UTF-8') as file:
try:
data = file.read().strip()
except OSError:
data = ""
return data
def get_all_interfaces() -> list[str]:
"""Podaj listę interfejsów"""
return listdir(NET_PATH)
for iface in get_all_interfaces():
speed = read_iface_param(iface, 'speed')
operstate = read_iface_param(iface, 'operstate')
carrier = read_iface_param(iface, 'carrier')
connected = "connected" if int(carrier) > 0 else "disconnected"
print(f'{iface:20} {speed:10} {operstate:10} {connected:10}')