Archive for category tools
Redaxo 4.x aus Wordpress-Feeds speisen
Das CMS Redaxo in der Version 4.2.x reklamiert für sich, “Einfach, flexibel und Sinnvoll” zu sein. Dem kann ich so zustimmen – das System ist schlank und überschaubar, der Trainingsaufwand für die Administration im Backend bleibt deutlich unterhalb dem, was für größere und komplexere Systeme veranschlagt werden muss, benötigte Zusatzmodule sind schnell programmiert – all in all eine intelligente Alternative in Projekten bis vielleicht 1000…2000 Seiten Content.
Die Aufgabenstellung
Feedreader, die fremden Content einbetten gibt es für jedes CMS zuhauf, natürlich auch für Redaxo – hier am Beispiel eines importierten Google-Kalenderfeeds. Fast allen ist aber gemein, dass sie – zu Wahrung des Copyrights und des Anstands – die eingebetteten Artikel zurück auf die Quelle verlinken, d.h. ein Klick auf den jeweilgen Artikel öffnet in der Regel die Quellenseite, womit die ursprüngliche (Redaxo) Site verlassen wird.
Was ist aber, wenn die Feed-Quelle eine exklusiv eigene Site ist, die nur dazu dient, extern Content für Redaxo zu generieren?
Das Modul: “Feed Hijack”
Module in Redaxo bestehen aus einer “Eingabe” - (optionale) Parameter, die mit übergeben werden, und der “Ausgabe”, üblicherweise ein Stück PHP-Code, der das Content-Fragment ausgibt.
Weitere Bibliotheken werden hier nicht benötigt; Feed Hijack läuft ohne externe Anhängigkeiten.
Das Modul steht aktuell auf der REDAXO-Addon-Seite zum download bereit; die erste Version 1.0 als ZIP gibt es vorläufig hier: feedhijack-1.0
Bitte Copyrights und README -Hinweise beachten!
Dokumente einfach aus Sharepoint 2001 und 2003 extrahieren
Werkzeuge für die Microsoft Sharepoint Portal Server (SPS) gibt es viele: Ausgefeilte, durchdachte, professionelle usw. Für die einfache Aufgabe, einen Dokumentenbaum auszulesen, genügen Grundkenntnisse der Struktur und ein paar Zeilen Programmcode. Wir betrachten im folgenden die beiden ersten Versionen von Microsoft Sharepoint Server, also 2001 und 2003:
Exportieren mit einer einzigen Zeile Shellscript: Sharepoint Portal Server 2001
Der SPS 2001 war für die Windows 2000 – Serverumgebung zugeschnitten; schon unter Windows 2003 Server läuft er nicht mehr. Microsoft hat aber neben HTTP und DAV einen Zugang per IFS (installable file system) vorgesehen, um lesenden Zugriff auf die Dokumentenstruktur eines Arbeitsbereichs zu erhalten. Das gleiche Verfahren wird übrigens auch noch von Exchange 2000 angewandt, sodaß man durch die “Hintertür” Zugriff auf die Dateistrukturen hat.
Mit diesem Shell-Kommando auf dem W2K-Server selbst (via cmd.exe) wird ein Laufwerksbuchstabe zugeordnet:
subst M: \\.\backofficestorage
Arbeitet man mit dem Windows-Explorer, müssen versteckte Ordner und Dateien angezeigt werden, sonst sieht man den Ordner WORKSPACES nicht, der die eigentlichen Dateien enthält; der Arbeitsbereich TESTDOCS unter “Anwendungen” ist leer (Dokumentenverzeichnis grün markiert)
Eine Zusammenfassung zum IFS drive und dem Microsoft Web Storage System finden sich hier: http://support.microsoft.com/kb/294312/en-us/
Der Artikel betont auch noch einmal, daß diese Methode zwar zum Extrahieren von Dokumenten geeignet ist, nicht aber zum Zurückschreiben, denn man wird aller Wahrscheinlichkeit nach die darunterliegende Autoren-/Rechtestruktur kompromittieren.
Sharepoint Server 2003 alias Sharepoint 2: Dokumentenexport mit IronPython
IronPython, Microsofts Python-Implementierung in der Version 2.6 bei codeplex ( http://ironpython.codeplex.com/ ) ermöglicht, Dotnet-Assemblies auf einfachste Weise einzuhängen, z.B. mit clr.AddReference(‘Microsoft.SharePoint’)
Hier ist der Code, um eine einzelne Dokumentenbibliothek auszulesen und auf eine lokale Platte unter Beibehaltung der timestamps zu spiegeln:
# -------------------------------------------------------------------------------------- # # Dokumentenimport von MS SharePoint. # Die originale Ordnerstruktur wird abgebildet; Zeitstempel der Dokumente bleibt erhalten. # Autor: weitlandt. Klaus Stein 29.10.09 # # Umgebung: Ironpython 2.6+ (www.ironpython.com bzw. codeplex.com) # SAVE_TO = "C:/SHP2" SITEURL = "http://localhost" DOCROOT = "Shared Documents" # ----------------------------- import os,sys,stat,array,io,clr from datetime import * from time import mktime as mktime clr.AddReference('Microsoft.SharePoint') from Microsoft.SharePoint import * def storefile(f,basedir,relpath): ptmp,ntmp = os.path.split(relpath) if not os.path.isdir(basedir + ptmp): os.mkdir(basedir + ptmp) a = f.ModifiedBy.ToString() d = f.OpenBinary() m = datetime(f.TimeLastModified) print f.Name+" (" + d.Length.ToString()+"), Letzte Speicherung von "+a+": "+m.ToString() fullpath = basedir + relpath b = open(fullpath,mode="w+b") for i in d: # b.write(chr(i)) b.close() ts = int(mktime(m.timetuple())) os.utime(fullpath,(ts,ts)) # timestamp setzen # main() tstart = datetime.now() if not os.path.isdir(SAVE_TO): os.mkdir(SAVE_TO) S = SPSite(SITEURL) W = S.OpenWeb() print "Importieren von: " + W.Title + " (" + W.Url + ")" R = W.GetListsOfType(SPBaseType.DocumentLibrary)[DOCROOT] # nur diesen Ordner skip = len(DOCROOT) cnt = 0 for i in R.Items: relpath = i.File.ToString()[skip:] # Das Startverzeichnis abgeschneiden storefile(i.File,SAVE_TO,relpath) cnt = cnt + 1 print "\nFertig. Angelegt: " + cnt.ToString() + ", Zeit: " + str(datetime.now() - tstart) W.Dispose() S.Dispose() # ----
…das ist alles! Für Erweiterungen bietet sich an, die Objekteigenschaften von ‘Items’ einmal genauer anzusehen – da ist noch etliches nützliches dabei.
Monitoring von Netware-Servern in Nagios mit NWNAGMON
Für die letzten im Dienst stehenden Novell-Server bieten wir hier ein kleines natives NLM an, das ein paar Eckdaten an einen NAGIOS 3 – Host übermittelt.
NAGIOS, ein freies Monitoring-System, ist eine Überlegung wert, wenn man mehr als eine Handvoll Server betreut. Für Novell Netware existiert der Ansatz, mit MRTGEXT diverse Betriebsparameter auszulesen, der in unserem Augen aber die Tücken der Plattform nicht vollständig berücksichtigt, und außerdem nicht ganz einfach aufzusetzen ist.
Wir haben – mit dem Hintergrund aus 10 Jahren NLM-Programmiererfahrung – einen einfachen Nagios-Agenten geschrieben, der auf Netware 5.0 bis 6.5 läuft und die Untiefen des Servers direkt zum Nagios-Host kommuniziert:
- Tote Partitionen
- Reboot (ein Netware-Server bootet nicht!)
- Anzahl der ABENDS (verunglückte oder “Zombie”-Prozesse)
- SYS: Volume vollgelaufen (der Server startet nicht mehr, wenn der freie Plattenplatz tatsächlich 0 oder nahe 0 MB ist)
- Remirror gespiegelter Partitionen wird erkannt
- Verdächtige CPU-Last > 96% für länger als eine Minute
NWNAGMON läuft dauerhaft im Hintergrund, anstatt als CRON-Script starr zur vollen Stunde/Tag etc. aufgerufen zu werden. Warum? Zum einen kann der Agent schneller reagieren, wenn z.B. eine Partition ausfällt, wird der neue Status sofort signalisiert und nicht erst zum nächsten CRON-Event.
Zum anderen hat sich gezeigt, daß manchmal – wenn das System schon einmal kompromittiert ist – es schwierig oder sogar unmöglich ist, einen weiteren Prozeß zu starten. In diesem Fall verharrt der Server bei 99% CPU-Last und diversen ABENDS und läßt keinen erneuten CRON-Jobs zu, was dem Admin dann wenig Chancen läßt – außer dem internen Netware-Debugger bleibt dann nur noch die RESET-Taste.
Download hier, Aufruf sollte weitgehend selbsterklärend sein. So sieht der Konsolenbildschirm aus:
Das NLM ist mit 15KB klein und sehr resourcenschonend. Verschlüsselung zum NAGIOS-Host hin wird unterstützt, allerdings nur XOR/Password (NSCA 3 Protokoll)
NWNAGMON generiert weiterhin eine Mini-HTML Seite mit dem aktuellen Status (siehe screenshot)
Das Programm ist und bleibt kostenlos, eine kleine Spende via Paypal (5€) wird aber gerne entgegengenommen.


