Seit ein paar Tagen mache ich meine ersten Gehversuche mit Python. Ich möchte an dieser Stelle ein paar Codeschnipsel posten, für deren Syntax ich ziemlich lange frickeln und googlen musste.

dbus

Ich verwende in einem Skript dbus, um den PC in den Ruhezustand zu schicken

#!/usr/bin/env python
#
import dbus

#----------- Fahre in SUSPEND ---------------------------
def GeheSchlafen():
        bus = dbus.SystemBus()
        proxy_object = bus.get_object('org.freedesktop.UPower','/org/freedesktop/UPower')
        pm = dbus.Interface(proxy_object,'org.freedesktop.UPower')
        pm.Suspend()
#-----------------------------------------------------------

print "Fahre nun in Suspend"
GeheSchlafen()

Alternativ kann in der letzten Zeile der GehSchlafen()-Funktion auch pm.Hibernate() o.ä. verwendet werden.

Logdatei

Der folgende Codeschnipsel gibt Log-Meldungen sowohl in eine Datei als auch am Promt aus:

#!/usr/bin/env python
#
import logging
log_path = "/home/produnis/MeineLogdatei.log" # hierhin wird geloggt.
#------- Log-File vorbereiten ---------------
logging.basicConfig(filename=log_path,
            level=logging.INFO,
            format="%(asctime)s - %(levelname)s: %(message)s")
#--- Promt-Meldungen vorbereiten --------
logger =logging.getLogger("")
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s - %(levelname)s: %(message)s")
ch.setFormatter(formatter)
logger.addHandler(ch)
#-----------------------------------------------------

# Jetzt wird geloggt:
logger.info("Skript gestartet")
logger.debug("Debugmeldung")
logger.warning("Warnmeldung")

Mehr Infos unter http://docs.python.org/library/logging.html

Bash-Befehl-Ausgabe an Variable übergeben

Ich rufe innerhalb meines Python-Scripts einen Bash-Befehl auf. Die Ausgabe des Befehls soll nun an eine Variable innerhalb von Python übergeben werden. Nehmen wir als Beispiel den Befehl

`ps axf | grep gedit`

Die passende Python-Funktion würde dann so aussehen:

#!/usr/bin/env python
#
from subprocess import Popen, PIPE
#
	p1 = Popen(["ps", "axf"], stdout=PIPE)
	p2 = Popen(["grep","gedit"], stdin=p1.stdout, stdout=PIPE)
	output= p2.communicate()[0]
	print output

Nehmen wir nun als Beispiel den folgenden Befehl:

`netstat -ute | grep -i [s]sh | wc -l`

Die passende Python-Funktion würde in etwa so aussehen:

#!/usr/bin/env python
#
from subprocess import Popen, PIPE
#
	p1 = Popen(["netstat", "-ute"], stdout=PIPE)
	p2 = Popen(["grep","[s]sh"], stdin=p1.stdout, stdout=PIPE)
	p3 = Popen(["wc","-l"], stdin=p2.stdout, stdout=PIPE)
	output= p3.communicate()[0]	
	output=int(output) # wc -l liefert nen Integer zurueck

Timestamp

Folgende Funktion erzeugt einen schicken Timestamp:

#!/usr/bin/env python
import time
#----------- Zeitstempel erzeugen ---------------------------
def TimeStamp():
	stamp=time.strftime("%Y-%b-%d-%H:%M:%S", time.localtime())
	return(stamp)
#-----------------------------------------------------------

stamp=TimeStamp()
print "Datum/Uhrzeit: [%s]" %  (stamp)