Dieser Beitrag ist schon sehr alt, und die Infos hier sind sicherlich hoffnungslos veraltet…
Python-Schnipsel
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)