====== Python ====== Oftmals gibt es eine Auswahl zwischen mehreren Python Versionen in der Paketverwaltung. Falls die vorinstallierte Version also zu alt ist, kann man einfach eine neuere Pralell dazu installieren. zypper in python310 Mit dem Befehl wurde python3.10 auf dem Suse-System installiert. ===== venv ==== Eignet sich um in einer vom System abgetrennten Python Umgebung neue Pakete zu installieren um hier Python Programme zu testen . Die Python Module lassen sich in der Umgebung mit ''pip'' installieren und anzeigen. Die in der Umgebung installierten Module lassen sich anzeigen mit: pip list Nun kann man eine eigene Umgebung schaffen in der nur die neue Python Version Verwendung findet. Hierzu wird ein neues Verzeichnis angelegt z.B. //ocsp-checker310// und dann das Kommando aufgerufen: python3.10 -m venv ocsp-checker310 Die Umgebung aktivieren mit: source ~/checker310/bin/activate Überprüfen welche Version verwendet wird mit ''python -V'' oder mit: (ocsp-checker310) tux@iglu:~/ocsp-checker310> pip3 --version pip 22.3.1 from /home/tux/ocsp-checker310/lib64/python3.10/site-packages/pip (python 3.10) In der Umgebung evtl. den Proxy nutzbar machen: (ocsp-checker310) tux@iglu:~/ocsp-checker310> export http_proxy=http://tux:geheim@internet.example.de:8181 (ocsp-checker310) tux@iglu:~/ocsp-checker310> export https_proxy=http://tux:geheim@internet.example.de:8181 Im Python-Umgebung wieder verlassen durch Eingabe von: deactivate ===== Listen ===== Listen sind für mich in Python immer wichtig, daher kommen sie hier zuerst. Nur bestimmte Elemente aus einer Liste heraus filtern: list( myBigList[i] for i in [87, 342, 217, 998, 500] ) ===== subprocess ===== Verwendung vom Modul ''subprocess'' um Standard Kommandos im Python Code auszuführen. import subprocess run = subprocess.run('openssl x509 -in RON_SBS.pem -text -noout|grep -A2 -i Validity|grep -i "Not After"', stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True) >>> >>> >>> run CompletedProcess(args='openssl x509 -in RON_SBS.pem -text -noout|grep -A2 -i Validity|grep -i "Not After"', returncode=0, stdout=b' Not After : Oct 18 09:30:41 2044 GMT\n', stderr=b'') Hierbei möchte man oft an den Output kommen. Das erzeugte ''run'' Obj. ist ein subprocess-Obj. und hat damit weitere Optionen. >>> run.stdout b' Not After : Oct 18 09:30:41 2044 GMT\n' >>> run_str = str(run.stdout) >>> run_lst = run_str.split(" ") >>> run_lst[15:19] ['Oct', '18', '09:30:41', '2044'] ===== Datum ===== Das aktuelle Datum ausgeben from datetime import date >>> date.today().isoformat() '2023-06-15' ===== String Bearbeitung ===== Vom String line = "{VLAN_0300}" sollen die geschweiften Klammern sowie das "VLAN_" komplett entfernt werden. Hier für eignet sich ''strip()'' am besten: line.strip('{VLAN_} Soll nur das letzte Zeichen "}" entfernt werden: line[:-1]