So verwenden Sie das psutil-Modul zum Abrufen von Prozess- und Systeminformationen auf Geräten, auf denen Junos OS ausgeführt wird
Das psutil
Python-Modul ist auf bestimmten Geräten verfügbar, die Python-Automatisierungsskripte unterstützen und auf denen entweder Junos OS Evolved oder Junos OS mit aktualisiertem FreeBSD ausgeführt wird. Sie können das psutil
Modul in Python-Skripten verwenden, um Informationen über laufende Prozesse und Die Systemauslastung auf dem Gerät abzurufen, z. B. Informationen über CPU, Speicher, Festplatten und Prozesse. Das Modul implementiert die Funktionalität vieler Befehlszeilentools, wie ps
und uptime
, unter anderem.
In Tabelle 1 sind die unterstützten psutil
Funktionen dargestellt. Weitere Informationen über das psutil
Modul und seine Funktionen finden Sie in der offiziellen Dokumentation unter https://psutil.readthedocs.io/en/latest/.
Funktionskategorie |
Unterstützte Funktionen |
Unterstützte Funktionen |
---|---|---|
CPU |
|
|
Datenträger |
|
|
Speicher |
|
|
Netzwerk |
– |
|
Prozesse |
|
|
Sensoren |
– |
– |
Systeminformationen |
|
|
Das folgende Python-Op-Beispielskript veranschaulicht Aufrufe der psutil
Funktionen zum Abrufen von Informationen über das System und die Prozesse auf dem jeweiligen Gerät, auf dem Junos OS ausgeführt wird:
import psutil import datetime ### *** CPU FUNCTIONS *** # Number of logical CPUs in the system print ("psutil.cpu_count() = {0}".format(psutil.cpu_count())) ### *** DISK FUNCTIONS *** # List of named tuples containing all mounted disk partitions dparts = psutil.disk_partitions() print("psutil.disk_partitions() = {0}".format(dparts)) # Disk usage statistics du = psutil.disk_usage('/') print("psutil.disk_usage('/') = {0}".format(du)) ### *** MEMORY FUNCTIONS *** # System memory usage statistics mem = psutil.virtual_memory() print("psutil.virtual_memory() = {0}".format(mem)) THRESHOLD = 100 * 1024 * 1024 # 100MB if mem.available <= THRESHOLD: print("warning, available memory below threshold") ### *** PROCESS FUNCTIONS *** # List of current running process IDs. pids = psutil.pids() print("psutil.pids() = {0}".format(pids)) # Check whether the given PID exists in the current process list. for proc in psutil.process_iter(): try: pinfo = proc.as_dict(attrs=['pid', 'name']) except psutil.NoSuchProcess: pass else: print(pinfo) ### *** SYSTEM INFORMATION FUNCTIONS *** # System boot time expressed in seconds since the epoch boot_time = psutil.boot_time() print("psutil.boot_time() = {0}".format(boot_time)) # System boot time converted to human readable format print(datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")) # Users currently connected on the system users = psutil.users() print("psutil.users() = {0}".format(users))
Wenn Sie das Op-Skript ausführen, gibt das Skript die angeforderten Informationen über das Gerät aus. Einige der Beispielausgaben wurden aufgrund der Kürze gekürzt.
user@host> op psutil-test.py psutil.cpu_count() = 4 psutil.disk_partitions() = [sdiskpart(device='/dev/md0.uzip', mountpoint='/', fstype='cd9660', opts='ro'), sdiskpart(device='devfs', mountpoint='/dev', fstype='devfs', opts='rw,multilabel'), ...] psutil.disk_usage('/') = sdiskusage(total=20609945600L, used=12531843072L, free=6429306880L, percent=66.099999999999994) psutil.virtual_memory() = svmem(total=4230012928L, available=7632039936L, percent=-80.400000000000006, used=658825216L, free=4325273600L, active=59793408L, inactive=3306766336L, buffers=289771520L, cached=0L, shared=249659392L, wired=599031808L) psutil.pids() = [43521, 43134, 33616, 33610, 33609, 33608, 33605, 33604, 33603, 33602, 33599, 33598, 33597, 33596, 33593, 8356, 7893, 7871, 7870, 7869, 7868, 7867, 7866, 7865, 7864, 7863, 7862, 7861, 7860, 7859, 7858, 7857, 7856, 7854, 7853, 7851, 7850, 7849, 7848, 7847, 7846, 7845, 7844, 7842, 7841, 7840, 7839, 7838, 7837, 7836, 7835, 7834, 7833, 7832, 7831, 7830, 7829, 7828, 7826, 7825, 7824, 7823, 7822, 7821, 7820, 7819, 7817, 7807, 7627, 7560, 7410, 7370, 7362, 7359, 7345, 7344, 7343, 7342, 7340, 7336, 7335, 7328, 7327, 7322, 7320, 7319, 7318, 7314, 7313, 7312, 7308, 7307, 7304, 7303, 7301, 7299, 7296, 7295, 7293, 7282, 7267, 7266, 7262, 6278, 6276, 6275, 5886, 5493, 5492, 4015, 4014, 3954, 3953, 3895, 3894, 3835, 3834, 3776, 3775, 3717, 3716, 3660, 3659, 3601, 3600, 3541, 3540, 3481, 3480, 3423, 3422, 3364, 3363, 3304, 3303, 3160, 3159, 3091, 3090, 3032, 3031, 2973, 2972, 2916, 2915, 2857, 2856, 2798, 2797, 2707, 2650, 2649, 2591, 2590, 2532, 2531, 2464, 2463, 2407, 2406, 2348, 2347, 2289, 2220, 2219, 2161, 2160, 2102, 2101, 2043, 2042, 1984, 1983, 1925, 1924, 1865, 1782, 1781, 1671, 1670, 1564, 1563, 1089, 1088, 1032, 1031, 973, 972, 916, 915, 859, 858, 803, 802, 483, 482, 164, 163, 54, 53, 52, 51, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 9, 8, 7, 6, 5, 4, 3, 2, 11, 1, 10, 0] {'pid': 0, 'name': 'kernel'} {'pid': 1, 'name': 'init'} {...} psutil.boot_time() = 1570456872.0 2019-10-07 07:01:12 psutil.users() = [suser(name='user', terminal='pts/0', host='198.51.100.1', started=1570552539.0)]