Mit folgendem Befehl lässt sich das Problem unter Ubuntu lösen:
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype
Wer z.B. DDNS nutzen möchte benötigt einen DNSSec-Key. Dieser wird für gewöhnlich mit
dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER
erzeugt. Dies kann aber je nach Rechner sehr lange dauern.
Ursache: /dev/random erzeugt nur sehr langsam Zufallswerte.
Lösung:
dnssec-keygen -r /dev/urandom -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER
/dev/urandom erzeugt wesentlich schneller Zufallszahlen.
Die Telekom aktiviert bei neuen analogen Telefonanschlüssen einen Anrufbeantworter (SprachBox, ehemals: T-NetBox), der von der Telekom zur Verfügung gestellt wird.
Nachteil: Hat jemand eine Nachricht hinterlassen, so ruft die Telekom in regelmäßigen Abständen an, um die Nachricht zuzustellen. Weiterhin ist die Funktion überflüssig, wenn man einen eigene Anrufbeantworter betreiben möchte.
Bei einem Anruf der kostenlosen Nummer
0800-3302424
kann man aus dem Menü den Punkt 4 wählen, um die SprachBox zu deaktivieren. Dabei bleiben alle Einstellungen erhalten. So lässt sich die SprachBox bei bedarf jeder Zeit wieder einschalten.
Unter der kostenfreien Nummer
0800-3302424
lässt sich die SprachBox auch wieder aktivieren.
Wer kennt das nicht? Man findet irgendwo im Schrank eine alte CD mit irgendwelchen Daten, die man noch gerne behalten würde. Aber beim überprüfen stellt man fest, dass die CD aufgrund ihres Alters oder durch Beschädigungen an der Oberfläche nicht mehr ordentlich einzulesen ist.
In diesem Beitrag beschreibe ich, wie man möglichst viele Daten von einem defekten Datenträger retten kann.
Wie oben beschrieben, erläutre ich das Vorgehen auf Basis von Ubuntu.
Als erstes ist das Paket gddrescue zu installieren. Dies geschieht über den Befehl
# sudo apt-get install gddrescue
Es ist auf jeden Fall darauf zu achten, dass gddrescue installiert wird, es es noch ein Paket ddrescue gibt, welches zwar ähnliche Funktionen hat, aber nicht zu dieser Beschreibung passt.
Nach dem Installieren des Paketes gddrescue ist nun der Befehl ddrescue (nicht dd_rescue) an der Konsole verfügbar. Damit lässt sich nun ein Abbild der CD oder DVD erstellen, ähnlich wie mit dd, jedoch mit dem Unterschied, dass bei einem Lesefehler nicht abgebrochen wird, sondern versucht wird möglichst alles um die defekte Stelle herum zu lesen.
An der Konsole sind folgende Befehle auszuführen:
# ddrescue -n -b2048 /dev/cdrom restore.iso restore.log # ddrescue -d -b2048 /dev/cdrom restore.iso restore.log
Jeder dieser Befehle wird je nach Beschädigungsgrad des Datenträgers einige Stunden laufen. Beide male wird auf unterschiedliche Weise ein Abbild des Datenträgers zu erstellen und dabei möglichst viele Sektoren zu speichern. Alle gelesenen Daten werden dabei in das ISO geschrieben. ddrescue speichert in dem Logfile Informationen darüber, welche Bereiche defekt sind und welche erfolgreich gelesen werden konnten. Das hat den Vorteil, dass beim Aufruf des zweiten Befehls nicht die bereits erfolgreich kopierten Bereichen noch einmal kopiert werden, sondern damit konzentriert sich ddrescue nur noch auf die Bereiche, die nicht gelesen werden konnten.
Nachdem nun ein ISO erstellt wurde, welche vielleicht auch noch einige brauchbare Daten enthält, gibt es nun noch die Möglichkeit herauszufinden, welche Dateien absolut unbeschädigt sind.
Dazu mounten man sich das ISO mit folgendem Befehl:
# sudo mount -o loop restore.iso /mnt
Nun erstellt man sich von alles Dateien eine MD5-Checksumme:
# find /mnt -type f -exec md5sum {} \; > /tmp/md5sum.txt
Mit diesem Befehl wird für jede Datei unterhalb von /mnt eine Checksumme in /tmp/md5sum.txt gespeichert.
Dank der Logdatei von ddrescue ist es nun möglich alle Bereiche des ISOs, die nicht von CD gelesen werden konnten, mit Inhalt zu füllen. Danach werden wieder Checksummen erzeugt und mit denen aus /tmp/md5sum.txt verglichen. Jede Datei, die in beiden Checksum-Dateien die gleichen Checksumme haben, sind auf jeden Fall fehlerfrei vom Datenträger kopiert worden.
# sudo umount /mnt
# cp rescue.iso rescue_tmp.iso
# echo -n "BAD SECTOR " > /tmp/tmpfile
# ddrescue --fill=- /tmp/tmpfile rescue_tmp.iso rescue.log
# sudo mount -o loop rescue_tmp.iso /mnt
# find /mnt -type f -exec md5sum {} \; > /tmp/md5sum2.txt
Das war’s. Mehr kann man einfach nicht retten!
Zum Glück kommt man heute nicht mehr ganz so oft in den Genuss per Modem im Internet zu surfen. Aber für den Fall, dass man doch mal mit dieser analogen Übertragungstechnik konfrontiert wird, kann es vorkommen, dass plötzlich keine Daten mehr über die Leitung gehen, obwohl der Rechner noch der Meinung ist, dass man online sei.
Das Problem liegt ganz einfach im Leistungsmerkmal “Anklopfen” des Telefonanbieters bzw. der Telefonanlage. Ruft jemand auf dem Anschluss an, mit dem man gerade per Modem online ist, wird in das Rauschen des Modems das Anklopfsignal geschickt. Das verwirrt das Modem aber so sehr, dass es den Faden verloren hat und nicht mehr mit der Gegenstelle “sprechen” möchte.
Aber die Lösung ist ganz einfach: Man schließt ein Telefon an dem Anschluss an und wählt
*#43#*
um das Ankopfen zu deaktivieren.
**43#*
… aktiviert das Ankopfen wieder.
Nun sollte es keine Verbindungsabbrüche mehr geben, wenn jemand versucht auf dem Anschluss anzurufen, mit dem man per Modem online ist.
Wer aktuelle Firefox-Versionen für den Zugriff auf das User Interface von VMware Server 2 verwendet wird schnell merken, dass er nur eine weiße Seite bekommt.
Das Problem liegt darin, dass für die SSL-Verschlüsselung der Browser SSL2 unterstützen muss. In aktuellen Firefox-Versionen ist SSL3 standardmäßig aktiviert, SSL2 jedoch nicht.
Um SSL2 im Firefox zu aktivieren, gibt man in der Adresszeile
about:config
ein.
Die Meldung
wird mit “Ich werde vorsichtig sein, versprochen!” bestätigt.
Nun geben wir oben im Suchfeld
security.enable_ssl2
ein und setzen mit einem Doppelklick den Wert von “false” auf “true”.
Nun sollte ein Zugriff auf https://
Wer seinen VMware ESXi 4 – Server an einem 3ware-Controller (z.B. 9650) betreibt, wird das Problem kennen, dass sich der Status der Festplatten und des Controllers mit VMware-Mitteln nicht überwachen lässt. Auch das von 3ware angebotene Überwachungstool 3dm2 findet keinen Controller in dem Server.
Wer jedoch einen Nagios-Server betreibt, hat Hoffnung. Mit einer von 3ware angepassten Version von tw_cli und einem Shell-Skript lässt sich der Status des Controllers mit Nagios per SSH (check_by_ssh) abfragen.
Hier gibt es eine Anleitung, wie man auf dem ESXi 4.0 den SSH-Dienst startet.
Die tw_cli, die auf dem ESXi läuft, gibt es hier. Die Daten befindet sich als Download unten im KB-Eintrag.
Der vermutlich beste Ort auf dem ESXi wird ein VMFS sein. Denn dies setzt der ESXi nach einem Neustart nicht zurück. Die tw_cli sollte natürlich noch ausführbar gemacht werden:
chmod u+x /vmfs/volumes/datastore1/tw_cli
Um tw_cli mit Nagios nutzen zu können ist noch ein Skript erforderlich, welches der Nagios per SSH aufruft, welches dem Nagios passende Werte zur Auswertung zurück gibt.
Download: check_3ware.sh
#!/bin/sh
#
# check_3ware.sh
#
# Simple script to check the status of arrays on 3ware/AMCC controllers
# using Nagios.
#
# Sander Klein <sander [AT] pictura [dash] dp [DOT] nl>
# http://www.pictura-dp.nl/
# Version 20070706
#
# BUGS: Sure...
#
TWCLI=/vmfs/volumes/datastore1/tw_cli
EXITCODE=0
BBUEXITCODE=0
#
# Preflight check...
#
if [ "$UID" -ne 0 ]; then
echo "You must be root to use this program..."
exit 3
fi
if [ -z $TWCLI ] || [ ! -x $TWCLI ]; then
echo "tw_cli not installed or not executable..."
exit 3
fi
if [ ! -x /bin/grep ] || [ ! -x /usr/bin/awk ]; then
echo "grep or awk not installed on this system..."
exit 3
fi
#
# Let the games begin!
#
# Find out which controllers are available...
CONTROLLERS=`$TWCLI info|grep -E "^c"|awk '{print $1}'`
for i in $CONTROLLERS; do
UNITSTATUS=`$TWCLI info $i unitstatus|grep -E "^u"|awk '{print $3}'`
# Create an array containing the units
UNIT=`$TWCLI info $i unitstatus|grep -E "^u"|awk '{print $1}'`
#Counter for the array
COUNT=0
for j in $UNITSTATUS; do
TMP=`echo $UNIT | grep $COUNT`
case "$j" in
OK)
CHECKUNIT=`$TWCLI info $i unitstatus | grep -E "$TMP" | awk '{print $1,$3}'`
STATUS="/$i/$CHECKUNIT"
OKSTATUS="$OKSTATUS $STATUS -"
PREEXITCODE=0
;;
REBUILDING)
CHECKUNIT=`$TWCLI info $i unitstatus | grep -E "$TMP" | awk '{print $1,$3,$4}'`
STATUS="/$i/$CHECKUNIT%"
MSG="$MSG $STATUS -"
PREEXITCODE=1
;;
DEGRADED)
CHECKUNIT=`$TWCLI info $i unitstatus | grep -E "$TMP" | awk '{print $1,$3}'`
STATUS="/$i/$CHECKUNIT"
# Check which disk has failed
DRIVE=`$TWCLI info $i drivestatus | grep -E "$TMP" | grep -v -i "OK" | awk '{print $1,$2}'`
MSG="$MSG $STATUS Reason: $DRIVE -"
PREEXITCODE=2
;;
*)
CHECKUNIT=`$TWCLI info $i unitstatus | grep -E "$TMP"`
STATUS="/$i/$CHECKUNIT"
MSG="$MSG $STATUS -"
PREEXITCODE=3
;;
esac
# Make sure we always exit with the most important warning
# OK is least and UNKNOWN is the most important in this case
if [ $PREEXITCODE -gt $EXITCODE ]; then
EXITCODE=$PREEXITCODE
fi
let COUNT=$COUNT+1
done
# Check BBU's
# BBU=`$TWCLI info |grep -E "^bbu"|awk '{print $1,$2,$3,$4,$5}'`
# if [ "${BBU[0]}" = "bbu" ]; then
# if [ "${BBU[1]}" != "On" ] || [ "${BBU[2]}" != "Yes" ] || [ "${BBU[3]}" != "OK" ] || [ "${BBU[4]}" != "OK" ]; then
# BBUEXITCODE=2
# BBUERROR="BBU on $i failed"
# fi
# fi
done
#if [ $EXITCODE -lt $BBUEXITCODE ]; then
# EXITCODE=$BBUEXITCODE
#fi
case "$EXITCODE" in
0)
echo "UNITS OK: $OKSTATUS"
exit 0
;;
1)
echo "WARNING: $MSG$OKSTATUS"
exit 1
;;
2)
echo "CRITICAL: $BBUERROR$MSG$OKSTATUS"
exit 2
;;
*)
echo "UNKNOWN: $MSG$OKSTATUS"
exit 3
;;
esac
# That's it, That's all, That's all there is...
Das Original-Skript habe ich etwas angepasst, damit es auch auf der Shell des ESXi läuft.
Man legt es sich am besten auch nach /vmfs/volumes/datastore1/check_3ware.sh und macht es ebenfalls mit chmod ausführbar.
Wie gewohnt muss ein SSH-Key für den Nagios-Benutzer erstellt werden. Der Public-Key muss dann wie gewohnt mit z.B. ssh-copy-id auf dem ESXi-Server eingetragen werden. Ebenfalls sollte der Nagios-Benutzer in seiner known_hosts den Schlüssel für den SSH-Server auf dem ESXi-Server eingetragen haben, da sonst “check_by_ssh” sich nicht verbinden kann.
Nun folgt noch ein neuer check_command
define command{
command_name check_3ware
command_line /usr/lib/nagios/plugins/check_by_ssh -H $HOSTNAME$ \
-i /etc/nagios3/conf.d/ssh/$HOSTNAME$.id -l root -t 25 \
-C '/vmfs/volumes/datastore1/check_3ware.sh'
}
Diesen check_command nun noch den Hosts in der Nagios-Konfiguration zuordnen und fertig ist der Check.