Data Protection Manager 2007 Backup von Exchange Server 2007 funktioniert nach Exchange 2007 Service Pack 1 nicht mehr

Nach dem ServicePack 1 für den Microsoft Exchange Server 2007 funktionierte das Backup des Exchange Mailboxclusters mit dem Microsoft System Center Data Protection Manager 2007 (DPM) nicht mehr.

Die Ereignisanzeige zeigte folgende Fehlermeldung:

Beschreibung: Das Replikat von Speichergruppe First Storage Group auf Mailboxserver1 ist nicht mit der geschützten Datenquelle konsistent. Alle Schutzaktivitäten für die Datenquelle scheitern, bis das Replikat mit Konsistenzprüfung synchronisiert wird. Sie können Daten aus vorhandenen Wiederherstellungspunkten wiederherstellen, aber neue Wiederherstellungspunkte können erst erstellt werden, wenn das Replikat konsistent ist. (ID 3106)
Fehler bei der Datenkonsistenzprüfung für LOGS von Speichergruppe First Storage Group auf Mailboxserver1 (ID 30146 Details: Unknown error (0xfffffdfe) (0xFFFFFDFE))
Empfohlene Aktion: Entweder sind die Datenbankdateien beschädigt, oder die ordnungsgemäßen Versionen folgender Dateien fehlen.
Wurde der Exchange-Server kürzlich aktualisiert, kopieren Sie die Dateien von diesem Server auf den DPM-Server.
eseutil.exe
ese.dll

Der DPM benutzt die Dateien eseutil.exe und ese.dll, um die Konsistenz des Backups der Exchangeserver Mailboxdatenbanken zu überprüfen. Diese Dateien sind kein Bestandteil des DPM. Sie müssen aber in ein Verzeichnis des Data Protection Managers kopiert werden, damit der DPM die Exchange Backups überprüfen kann. Die Versionen dieser Datein müssen mit der Version des Exchangeservers übereinstimmen. Das Servicepack 1 des Exchangeserver 2007 bringt auch neue Versionen der eseutil.exe und ese.dll Dateien mit. Die Dateiversionen dieser Dateien, die sich auf dem DPM befanden, waren nach dem Exchange 2007 SP1 nicht mehr kompatibel mit der neuen Exchange Version. Ein einfaches Kopieren der neuen SP1 Versionen von eseutil.exe und ese.dll vom Exchangeserver auf den Data Protection Manager scheiterte daran, dass der Exchangeserver ein 64bit-System ist und der Data Protection Manager ein 32bit-System. Da Microsoft die eseutil.exe und ese.dll Dateien nicht explizit zum Download anbietet, war zunächst guter Rat teuer. Woher sollte man jetzt eine 32bit-Version von eseutil.exe und ese.dll bekommen? Extra eine 32bit-Testversion von Exchange Server 2007 mit Service Pack 1 zu installieren erschien mir als zu umständlich.

Im Technet Blog fand ich den Hinweis, dass die Service Pack 1 Versionen der eseutil.exe und ese.dll Dateien in den Microsoft Exchange Server 2007 Management Tools 32-Bit enthalten sind, die man bei Microsoft downloaden kann. Diese wurden dann auf einem Testserver installiert und die dort enthaltenen neueren SP1 Versionen von eseutil.exe und ese.dll,

eseutil_ese_on_exchange

wurden dann auf den DPM Server kopiert.

ese_on_dpm

Von nun an funktionierte das Data Protection Manager 2007 Backup von Exchange Server 2007 wieder.

dpm_nach_neuer_ese

Die Microsoft Exchange Server 2007 Management Tools 32-Bit entpuppten sich beim Setup als 32bit Exchangeserver, was die Downloadgröße schon erahnen lies. Bei der Installation sollte man deshalb darauf achten, dass nur die Management Tools ausgewählt sind.

setup_exchange_sp1_managementtoolsl1

Wie kann man bei dem Typo3-Feature „Klick-vergrössern“ die Größe der vergrößerten Bilder anpassen?

Als ich in Typo3 ein Bild mit der Funktion „Klick-vergrössern“ vergrößern wollte, war das vergrößerte Bild kleiner als das Orginalbild. Auf der Weboberfläche fand ich keine Option, wo ich die Größe des vergrößerten Bild einstellen konnte.

Auf www.typo3-tutorials.org fand sich die Lösung des Problems.

Um die Maximalgröße der vergrößerten Bilder zu definieren, ist TypoScript notwendig. Im Constants Editor

kann man mit folgenden Zeilen die Größe des vergrößerten Bildes festlegen:

styles.content.imgtext.linkWrap.width = 500
styles.content.imgtext.linkWrap.height = 500

Die angegebenen Werte sind Maximalwerte. Die Bilder werden proportional skaliert und nicht verzerrt.

Bei Typo3-Inhaltselementen Text m/Bild in Kombination mit Yaml werden Bilder falsch an dem unteren Seitenrand platziert

Bei der Kombination von Typo3 und dem CSS-Framework Yaml trat folgendes Problem auf:


Bei dem Einfügen von mehreren Typo3-Contentelementen vom Typ Text m/Bild wurde das letzte Inhaltselement immer an dem Seitenende platziert (rot). Eine nähere Untersuchung ergab, dass die folgende, von Typo3 generierte HTML-Zeile die Ursache für dieses unerwünschte Verhalten war:

<div class=“csc-textpic-clear“></div>

Im Yaml-Forum fand ich den entscheidenden Hinweis zur Lösung dieses Problems.  Man muss der umgebenden Div-Box die Klasse floatbox zuweisen. Eine Erklärung dieser Klasse findet man in der Yaml-Dokumentation. Mit der Klasse floatbox werden die Text mit Bild Inhaltselemente wieder richtig platziert (grün).

Variablen bei sed-Ausdrücken

Problem: Beim Suchen und Ersetzen eines Strings in einer Textdatei mit dem Linux-Programm sed (Stream Editor) trat das Problem auf, dass bei der Verwendung von Shellvariablen als Suchmuster der gewünschte Text, also der Wert der Variablen, nicht durch den Zieltext ersetzt wurde. Ein Test ohne Variablen funktionierte aber ohne Probleme.

sed ’s/suchmuster/zieltext/g‘ Eingabedatei > Ausgabedatei
mv Ausgabedatei Eingabedatei

ersetzte den Text „suchmuster“ in der „Eingabedatei“ mit dem Text „zieltext“ und schrieb das Ergebnis in die „Ausgabedatei“.

Folgendes funktionierte aber nicht:

suchmuster=“das ist der quelltext“
zieltext=“das ist der zieltext“
sed ’s/$suchmuster/$zieltext/g‘ Eingabedatei > Ausgabedatei
mv Ausgabedatei Eingabedatei

Der Text „das ist der quelltext“ wurde nicht durch den Text „das ist der zieltext“ ersetzt.

Lösung: Durch eine Suchmaschinenrecherche fand ich die Lösung. Sed wertet den Inhalt von Variablen nicht aus, wenn man einfache Anführungszeichen (‚) beim Erstellen des Ausdrucks verwendet. Ersetzt man die einfachen Anführungszeichen durch doppelte Anzührungszeichen („), werden zuerst die Variablen expandiert und dann erst der Sed-Ausdruck ausgeführt.

Der funktionierende Code sah dann so aus:

suchmuster=“das ist der quelltext“
zieltext=“das ist der zieltext“
sed s/$suchmuster/$zieltext/g Eingabedatei > Ausgabedatei
mv Ausgabedatei Eingabedatei

Quelle: http://www.unixboard.de

SSH Login scheitert mit der Fehlermeldung „sshd[xxxx]: fatal: daemon() failed: No such device“

Plötzlich war bei unserem OpenSuse 10.3 Rootserver kein SSH Login mehr möglich. Der Verbindungsaufbau wurde mit der Meldung „Connection Refused“ verweigert. Glücklicherweise hatte ich noch Zugriff auf die Konsole des Servers, wo ich mich auch lokal anmelden konnte. Eine Überprüfung mit

rcsshd status

zeigte, dass der SSH Daemon nicht lief. Auch ließ er sich mit

rcsshd start

nicht mehr starten. Ein Blick in /var/log/messages zeigte folgende Fehlermeldung: sshd[27256]: fatal: daemon() failed: No such device.
Eine Internetrecherche brachte dann die Lösung des Problems. Anscheinend war die Datei /dev/null daran Schuld, dass sich der SSH Daemon nicht starten ließ. Mit folgenden Befehlen wurde die Datei /dev/null gelöscht und neu erstellt:

rm -rf /dev/null
mknod /dev/null c 1 3

Danach funktionierte das Starten des SSH Daemons mit

rcsshd start

wieder.

Gefunden habe ich die Lösung unter:

http://forums.misdivision.com/showthread.php?t=633

Bash: Löschen von Zeilen aus einer Datei, die ein bestimmtes Suchmuster enthalten

Das Löschen von bestimmten Zeilen aus einer Datei kann mithilfe einer temporären Datei und dem Kommandozeilentool grep geschehen. Grep gibt alle Zeilen einer Textdatei aus, die einem bestimmten Suchmuster entsprechen. Die Option -v von grep negiert die Ausgabe von grep. Es werden dann nur Zeilen einer Datei ausgegeben, die ein bestimmtes Suchmuster nicht enthalten. Die Ausgabe auf dem Bildschirm kann man nun in eine temporäre Datei umleiten. Im Anschluss daran kann man die Originaldatei mit der temporären Datei überschreiben. Nun hat man eine Datei, aus der diejenigen Zeilen entfernt wurden, die ein bestimmtes Suchmuster enthielten.

grep -v  suchmuster originaldatei > tempdatei
mv tempdatei originaldatei

Typo3 Extension Manager (Erw Manager, Ext Manager) wird nicht angezeigt, stattdessen sieht man nur eine leere Seite

Problem: Nach der Neuinstallation von Typo3 auf einer „frischen“ OpenSuse 10.3 Installation wurde der Typo3 Extension Manager (Erw Manager, Ext Manager) nicht angezeigt. Es war nur eine leere Seite zu sehen.

Ursache: Ein Blick in die Error-Logdatei von Apache zeigte folgende Meldung:

PHP Fatal error: Call to undefined function gzfile()

Dies war ein Hinweis darauf, dass es ein Problem mit dem zlib-Modul von PHP gab.

Lösung: In der Suse Paketverwaltung von Yast zeigte sich, dass das php5-zlib Modul nicht installiert war. Eine Installation des PHP Moduls und ein Neustart von Apache beseitigte den Fehler mit der leeren Seite statt dem TYPO3 Extension Manager.

Problem mit Pagebrowser bei tt_news in Verbindung mit dem Typo3 Plugin CoolURI

Nachdem wir uns bei einigen Projekten mit der Konfigurationsdatei der Typo3 – Extension realurl mehr schlecht als recht herumgeschlagen hatten, waren wir froh, mit CoolUri eine alternative Typo3 – Extension für „schönere“ Urls gefunden zu haben. Bei Tests bemerkten wir, dass der Pagebrowser der tt_news Extension nicht mit CoolUri funktionierte.

Eine Web-Recherche brachte folgende Lösung:

1. Anpassen des TypoScript Templates:

Folgende Zeile muss dem Typoscript Template der Seite hinzugefügt werden:

plugin.tt_news = USER_INT

Quelle:

2. Anpassen der CoolURI XML Konfigurationsdatei:

Folgender Abschnitt muss der XML – Konfigurationsdatei von CoolURI hinzugefügt werden:

<part key=“page([0-9]+)“>
<parameter>tx_ttnews[pointer]</parameter>
</part>

Quelle:

Diese Anpassungen von CoolURI bewirken, dass die tt_news Seiten beim „Pagebrowsing“ in der URL einfach durchnummeriert werden. 1.html, 2.html etc.

Typo3 Gästebuch Extension Modern Guestbook/ve_guestbook mit CoolUri

Damit die Typo3 Gästebuch Extension Modern Guestbook/ve_guestbook mit CoolUri funktioniert, muss die Datei CoolUriConf.xml angepasst werden.
Ohne diese Anpassung funktionieren die Links für das Umschalten zwischen den einzelnen Seiten der Gästebucheinträge nicht.

Änderung an der CoolUri Konfigurationsdatei CoolUriConf.xml:

Der Abschnitt:

<part>
<parameter>cHash</parameter>
</part>

muss aus dem übergeordneten Abschnitt „predefinedparts“

<predefinedparts>
<part>
<parameter>cHash</parameter>
</part>
</predefinedparts>

in den Abschnitt „uriparts“ verschoben werden.

<uriparts>
<part>
<parameter>cHash</parameter>
</part>
</uriparts>

Gefunden auf: www.typo3forum.net

Reguläre Ausdrücke – regex, singleline, non-greedy

Ich habe mich bisher nur so viel wie nötig mit regulären Ausdrücken beschäftigt. Der komplexe Syntax und das kryptische Aussehen der regulären Ausdrücke haben mich bisher davon abgeschreckt, reguläre Ausdrücke zu benutzen. Kürzlich hatte ich aber das Problem, in vb.net Text zwischen einer Startmarkierung und einer Endmarkierung zu suchen. Natürlich kann man das auch mit den .net Stringfunktionen erreichen, aber ich wollte es dieses Mal mit regulären Ausdrücken versuchen.

Nach einigen Anfangsproblemen bin ich nun richtig begeistert von der Mächtigkeit der regulären Ausdrücke.

Mein erstes Problem war, dass sich mein zu analysierender Text über mehrere Zeilen zog, also waren Zeilenumbrüche vorhanden. Ebenso zogen sich die zu extrahierenden Textstellen über mehrere Zeilen. Meine regulären Ausdrücke lieferten nicht das erwartete Ergebnis. Besser gesagt: Sie lieferten gar kein Ergebnis.

Nach etwas Internetrecherche erfuhr ich, dass bei der Erstellung eines regex Objektes Optionen angegeben werden können. In vb.net findet sich das Ganze unter: System.Text.RegularExpressions.RegexOptions

Ohne weiter nachzulesen, wählte ich die Option Multiline, da ich ja Text zeilenübergreifend analysieren wollte. Diese Option lieferte aber zu meiner Überraschung ebenfalls kein Ergebnis.

Also machte ich mich daran, die Optionen näher anzuschauen. Dabei fand ich eine weitere Option: Singleline. Und genau diese muss man angeben, um das gewünschte Ergebnis zu erreichen. Ich finde das Ganze zwar etwas verwirrend: Singleline für zeilenübergreifendes Analysieren – aber Hauptsache, es funktioniert.

Wenn man also Text in vb.net mit regulären Ausdrücken über mehrere Zeilen hinweg analysieren möchte, muss man folgende Option einstellen:

System.Text.RegularExpressions.RegexOptions.Singleline

Beispiel:

Text, der analysiert werden soll:

start text1
text2
text3 ende

Regulärer Ausdruck: start(.*)ende

Dieser Ausdruck soll einen String zwischen start und ende extrahieren.

Ergebnis ohne die Option Singleline:

– Es wird nichts gefunden

Ergebnis mit der Option Singleline:

text1
text2
text3

Danach tauchte aber ein weiteres Problem auf. Bei sich mehrfach wiederholenden Mustern im Text, wurde immer die größtmögliche Ergebnismenge zurückgeliefert. Ich brauchte aber jede einzelne Ergebnismenge. Das Ganze wird an einem Beispiel deutlicher:

Text, der analysiert werden soll:

start text1
text2
text3 ende
start text4
text5
text6 ende

Der Regulärer Ausdruck: start(.*)ende liefert folgendes Ergebnis:

text1
text2
text3 ende
start text4
text5
text6

Gewünscht waren aber 2 Ergebnismengen:

Ergebnis 1:

text1
text2
text3

Ergebnis 2:

text4
text5
text6

Bei der Lösung dieses Problems stieß ich auf die Begriffe greedy (gierig) und non-greedy (nicht gierig) im Zusammenhang mit der Definition von regulären Ausdrücken. Greedy bedeutet, es wird immer die größtmögliche Ergebnismenge zurückgeliefert und non-greedy bedeutet, es wird die kleinstmögliche Ergebnismenge zurückgeliefert. Standartmäßig zeigen reguläre Ausdrücke ein „gieriges (greedy)“ Verhalten. Um ein „nicht gieriges (non-greedy)“ Verhalten zu erreichen, muss man bei der Definition von regulären Ausdrücken nach dem Quanifizierer noch ein ? anfügen.

Beispiel:

Text, der analysiert werden soll:

start text1
text2
text3 ende
start text4
text5
text6 ende

Der reguläre Ausdruck: start(.*?)ende liefert das gewünschte Ergebnis:

Ergebnis 1:

text1
text2
text3

Ergebnis 2:

text4
text5
text6