Überprüfung der Dateikonsistenz nach der Virtualisierung mit md5

Bei einem Virtualisierungsprojekt wurde seitens Kunden Anforderung sicherzustellen, dass keine der Dateien auf den Servern durch die Migration auf ESX Cluster ändert, gestellt.

Die Wahl fiel fast sofort auf die md5, da die Hashes sich mit sehr hohen Wahrscheinlickeit sich ändern, wenn auch ein kleiner Teil der Datei sich ändert.

Dazu wird ein freies Tool namens md5 sums verwendet. Es handelt sich hier um ein Konsolentool, dessen Ausgabe angepasst werden kann, so dass später die Ergebnisse mit einem diff-Tool verglichen werden können. Die MD5-Sums exe kann hier heruntergeladen werden.

Um das Ganze noch etwas zu automatisieren (denn oft sind es mehrere Tausend Dateien, gerade auf dem Fileserver) wird ein batch Script erstellt:

1
2
@echo off
for /f "usebackq delims==" %%i in (`dir /B /S`) do c:\md5\md5sums.exe -u "%%i"

die Ausgabe des Scripts wird beim Aufruf in eine Textdatei umgeleitet:

3
md5.bat > file.txt

Die Batch wird vor und nach der Migration ausgeführt. Ergebnisse werden z.B. mit diff verglichen. Diff bekommt man u.a. hier.

VMWare ESXi 4.1 Unattended PXE Installation

Problemstellung:

Installation mehrerer ESXi 4.1 Server (ca. 45+ Geräte), die immer gleich von der Hardware und Einstellungen her sind, unterscheiden sich aber durch die Netzwerk- sowie iSCSI-Konfiguration.

Ausgangslage: Hardware ist ein DELL PowerEdge R710 mit insgesamt 12 Netzwerkports, einem DRAC Port und 64GB RAM. Diese Server werden an verschiedene Standorte ausgeliefert. Jeder Standort verfügt über eigenes Subnetz für den Traffic der Virtuellen Maschinen (VM) und ein eigenes, von außen nicht erreichbares Netz, für den iSCSI Verkehr. Der “normale” Standort verfügt über mindestens 2 ESXi Hosts und eine iSCSI Storage von DELL Equalogic.

Der Lösungsansatz besteht in der Erstellung einer Installationsumgebung mit PXE Server und entsprechender kickstart Scripts für die installation und Konfiguration.

Das Umgebungskonzept sieht unter anderem zwei gesonderte Netzwerkkomponenten für die Verbindung von ESXi Hosts zu Storage vor. Für den normalen Traffic der VMs wird ein weiterer/weitere Switch(e) je nach geforderter Ausfallsicherheit verwendet. Continue reading ‘VMWare ESXi 4.1 Unattended PXE Installation’

Hardwarebedingte Installation der Empirum Pakete

Neulich bin ich auf folgende Problemstellung gestoßen:
Bei der Installation eines Empirum-Pakets musste zwischen Notebook- und Desktop-Installation unterschieden werden (z.B. Installation des SafeGuard Clients, wobei die Desktops nicht verschlüsselt werden). Nach anfänglicher Überlegung ob man in der Setup.inf nach der DNS-Namen unterscheiden kann, kam ich auf die Idee, dass man hierzu WMI nutzen könnte. Eine kurze Internetrecherche hatte auch direkt den Lösungsansatz geliefert:

'WMI check if the computer is a notebook
'Returning "1" if it is, "0" if not
returnCode = IsLaptop(".")
 
'WScript.Echo returnCode 'just a test

WScript.Quit(returnCode)
' End of Script

Function IsLaptop( myComputer )
' Argument:
' myComputer [string] name of the computer to check,
' or "." for the local computer
' Return value:
' 1 if a battery is detected, otherwise 0

On Error Resume Next
Set objWMIService = GetObject( "winmgmts://" & myComputer & "/root/cimv2" )
Set colItems = objWMIService.ExecQuery( "Select * from Win32_Battery", , 48 )
IsLaptop = 0
For Each objItem in colItems
IsLaptop = 1
Next
If Err Then Err.Clear
On Error Goto 0
End Function

Dieses Skript wird per Call-Befehl aus Setup.inf aufgerufen. Der Rückgabewert ist über %ErrorLevel% abrufbar.
Das Skript stammt aus dem matrix42 Forum.
UPD: Die Empirum Version 14.1 (Patch 02) Hat nun auch eine vordefinierte interne Variable IsLaptop, über die es auch gehen soll.

SSL Redirect apache2

… geht auch ohne ModRewrite. Natürlich muss modssl installiert und eingebunden sein. Entsprechendes <Directory > Abschnitt des VirtualHost muss ergänzt werden:

<Directory />
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "example.com"
ErrorDocument 403 https://example.com
</Directory>

Damit werden alle Versuche die Seite über HTTP aufzurufen mit dem Status 403 (Forbidden. Authorization will not help and the request SHOULD NOT be repeated) auf https:// umgeleitet. AuthType Basic funktioniert dabei ohne Probleme.

VBS: Exchange Cache Modus im Outlook 2003 aktivieren

Bei einer Migration von Exchange 2003 auf 2010 gibt es Probleme bei Verwendung von Outlook 2003, wie z.B. langsamer Update von Ordnern oder mit Adressbüchern, wenn der Outlook nicht im Exchange Cache Modus läuft. Die Ergebnisse der Tests führten zu der Entscheidung, dass alle Clients auf Cache Mode umgestellt werden sollen.

Das Umstellen per Gruppenrichtlinie erfüllte diesen Zweck bis auf den Fall, wenn Anwender mehrere MAPI Profile verwendet hat.

Continue reading ‘VBS: Exchange Cache Modus im Outlook 2003 aktivieren’

PowerShell Exchange: Default Address Policy

Nach der Migration auf Exchange 2010 wurde leider die Default Address Policy auch für Kontakte übernommen. Ab und an kam es zu Falschzustellungen der Mails.

So, zum Beispiel, wenn ein Hans Müller als Kontakt und als Mailbox, also mit einer Adresse hans.mueller@extern.com und hans.mueller@intern.com vorhanden war, konnte es dazu kommen, dass eine Mail, die an den externen Hans Müller raus gehen sollte, an den Hans Müller im eigenen Hause zugestellt worden ist, wenn der Benutzer die Adresse nicht direkt im Outlook eingetragen hat, sondern den Kontakt aus dem Adressbuch angeklickt hat.

Da es sich um mehrere Tausend Kontakte handelt, kam manuelle Anpassung erneut nicht in Frage. Abhilfe wurde mit einem PS Script geschaffen: Continue reading ‘PowerShell Exchange: Default Address Policy’

Windows PowerShell: erster Versuch

Ich habe Powershell immer eher stiefmütterlich behandelt. Besser gesagt: ich habe immer einen Umweg um PS gemacht, weil ich Microsoft nicht wirklich gute Sachen zutraue. Aber diesmal kam ich nicht drumherum.

Hintergrund war Migration bei einem Kunden von Exchange 2003 auf 2010. Exchange 2010 hat bestimmte Namenskonventionen was z.B. Aliase von Kontakten angeht. Nun dürfen Aliase nur folgende Zeichen enthalten:

Ein Alias kann Buchstaben, Zahlen sowie folgende Satzzeichen und Symbole enthalten:

!#$%^&*+-./=?_{}|~

Dabei darf ein Punkt nicht an der ersten und/oder letzten Stelle stehen.

Continue reading ‘Windows PowerShell: erster Versuch’

Windows batch: mehrere Dateien umbenennen

Wie benennt man in Windows mehrere Dateien um wenn man hunderte und Tausende Dateien hat? Manuelle bearbeitung im Windows Explorer käme in dem Fall nicht in Frage.
Das geht denkbar einfach:

ren *.txt *.doc

Was ist aber, wenn mann aus allen *.txt Dateien *.txt.bak machen will? Das geht so:

FOR %I IN (*.txt) DO ren %I %~nxI.bak

Andere Variationen sind möglich. Hilfe findet man mit der folgender Eingabe:

Continue reading ‘Windows batch: mehrere Dateien umbenennen’

/dev/full – Interessante Unix-Welt

Beim Suchen nach Ursache eines Fehlers bin ich über /dev/full gestolpert.
Die Meisten kennen ja /dev/null oder /dev/zero, aber /dev/full war mir bisher nicht bekannt. Wie der Name vermuten lässt ist es ein Device, was immer voll ist. Das zeigt auch der versuch:

1
2
# echo foo > /dev/full
bash: echo: Schreibfehler: No space left on device

Praktischer Nutzen ist: man kann sein Programm oder Script damit testen, ob das Handling voller Platte funktioniert.

Hallo Android!

Ab Samstag bin ich stolzer besitzer eines “Meilensteins”. Obwohl ich kein Freund von Übersetzungen der englischen Marken ins Deutsche bin, habe ich dieses Wort bewusst gewählt, um die Zweideutigkeit hervorzubringen.
Ja, es ist wirklich ein Meilenstein. Zumindest für Motorola. Man erinnere sich an die razr, rockr und wie sie alle hießen.
Das Milestone vermittelt einen soliden Eindruck. Aber die Freude hält sich in grenzen.
Continue reading ‘Hallo Android!’