Gewaltsamer Reset

In gewissen Situation muss man ein system mit einem hängenden Prozess neu starten, weiss aber, dass es mit dem normalen "reboot" Kommando beim herunterfahren hängen bleiben wird. Dies passiert z.B. besonders häufig bei Filesystem-Prozessen, die vom Kernel ausgeführt werden und sich somit nicht "killen" lassen, wie copy, rsync, nfs, usw.

Somit hilft dann nur noch der "Hard Reset", bei dem man jedoch physischen Zugang zum Server haben muss.

Hat man diesen gerade nicht gibt es noch eine andere Möglichkeit, das System sofort neu zu starten, ohne durch den Prozess des "herunterfahrens" zu gehen: Über das in den Linux-Kernel integrierte sysrq-Interface.

Dies schaltet man zuerst mittels:

echo s > /proc/sysrq-trigger

an und löst dann den "brutalen" reset über:

echo b > /proc/sysrq-trigger

aus.

Quellen:

c’t: [http://www.heise.de/ct/hotline/Gewaltsamer-Reset-unter-Linux-321064.html|Gewaltsamer Reset unter Linux]

ESX: Keine Netzwerkverbindung bei einem ESX Server innerhalb einer VM

In einem VMware ESX System kann man auch ein ESX innerhalb einer VM ertsellen, was zum testen sehr gut sein kann. 😉

Man wird aber merken, dass die VMs in der "nested VM", keine Netzwerk-Verbindung haben.
Dieses kommt daher, weil beim ESX Standardmässig der sog. "Promiscuous Mode" beim vSwitch nicht aktiviert ist.

Am besten legt man deshalb ein neues Netzwerk (Portgruppe oder vSwitch) an aktiviert dort den Promiscuous Mode und Verbindet das Netzwerk mit der "ESX VM".

Weitere Informationen dazu in der vcritical.com: [http://www.vcritical.com/2011/07/vmware-vsphere-can-virtualize-itself/|VMware vSphere can virtualize itself + 64-bit nested guests]

DVDFab startet nicht

Bei Windows XP SP3 kann es vorkommen, dass die Software "DVDFab" nicht mehr startet und stattdessen einfach im Hintergrund des Tankmanagers bleibt.

Der Grund liegt am Treiber gewisser Grafikkarten. Reparieren lässt sich dies mit dem folgenden Registry-Fix:

[HKEY_LOCAL_MACHINESOFTWAREDVDFab]
"FabPlayDll"=dword:00000001

Ressourcen

DVDFab Forum: [http://forum.dvdfab.com/showthread.php?t=13199&page=3|DVDFab won’t open on XP SP3]

Beim upload mit TFTP kommt die Meldung: „File not found“

Der Download von Dateien per tftp klappt gut, doch wenn man etwas uploaden möchte erhält man die Meldung: "Error code 1: file not found".

Dies kommt daher, dass tftp hauptsächlich für das Herunterladen von Dateien geschaffen wurde, beispielsweise bei PXE Installationen übers Netzwerk.
Daher ist der tftp Server zurückhaltend bei Schreibzugriffen und erlaubt diese Standardmässig nur, wenn eine Datei bereits existiert (also nur das Überschreiben einer Datei), was auch die Meldung "file not found" erklärt.

Man kann dieses Verhalten jedch mit der Option "-c" (für "create") ändern, indem man diese in der Datei /etc/xinet.d/tftp Angbit:

service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -c -s /tftpboot -u tftp
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

Quellen:

tftp

MP3 recoden mit LAME

Bei MP3 Dateien erwischt man oft nicht die passende Grösse, bzw. 320CBR encodete Dateien von Audiofreaks. Das braucht für ein MP3 dann schon mal über 10MB, obwohl man den Qualitätsunterschied eines 3MB grossen files kaum heraushören würde… 😉

Doch wie encoded man diese nun einfach? Es gibt einerseits kostenpflichtige Programme wie z.B. xrecode, doch es geht auch ganz einfach kostenlos mit dem bekannten lame encoder, den sozusagen jedes kommerzielle Programm auch benutzt. 😀

Mittels folgendes kommandos kann man ein MP3 file mit den standareinstellungen von lame recoden:

lame track.mp3 track.recoded.mp3

Wer noch einige Qualitätsmerkmale angeben will, kann dies verwenden:

lame -V -q0 -b192 track.mp3 track.recoded.mp3"

Oder wer lieber eine konstante bitrate hat:

lame --cbr -b192 -q0 track.mp3 track.recoded.mp3

Unter Linux geht das sogar für ein ganzes Verzeichnis:

for track in [ `ls -1 *.mp3` ]; do lame $track recoded_${x}; done

Weitere Einstellmöglichkeiten finden sich in der lame manpage.

Related Links

lame manpage
dZone: Recode MP3
Creating quality audio-files using Windows, L.A.M.E.

Related Downlods

LAME Homepage
LAME Windows binaries

vSphere CLI: Verbindung zum ESX schlägt fehl

Wenn man sich mit den vSphere CLI’s zum Server verbinden will erhält man die Meldung:

Server version unavailable at '<a href="https://esx-server:443/sdk/vimService.wsdl'" target="blank">https://esx-server:443/sdk/vimService.wsdl'</a> at /usr/share/perl5/VMware/VICommon.pm line 545, <STDIN> line 2.

Dies ist kein bug in der vSphere CLI, sondern eine restriktion in den neueren perl Versionen, die ein https connect ohne gültiges SSL Zertifikat verweigern. – Und da fast niemand auf dem ESX ein meist kostenpflichtiges "gültiges" SSL Zertifikat installieren will, dürfte dieser mag einige Administratoren betreffen.

Die Lösung ist ganz einfach mittels einer shell-Variable, die man jeweils vor dem Aufruf setzen muss:

export PERL_LWP_SSL_VERIFY_HOSTNAME=0

Damit dürfte dann die verbindung klappen.

Related Links

vmware communities: openSSL certificate verification

ESX: Backup

Hat man einen ESX Server aufgesetzt und am laufen kommt bald die Frage auf, wie sichern.

Hier sind einige Szenarien erwähnt:

ESX-Konfiguration

Es ist zwar nicht unbedingt nötig, die ESX Konfiguration zu sichern, kann aber trotzdem nützlich sein und mit den vmware-vcli scripts [http://www.vm-help.com/esx/esx3i/esx_3i_rcli/vicfg-cfgbackup.php|vicfg-cfgbackup] gemacht werden:

[root@linux-server ~]# vicfg-cfgbackup --server esx-server -s /backup/esx-server.tgz

Virtuelle Maschinen (Full Backup)

Oft wäre es z.B. in Desaster Szenarien gut, wenn man ein volles Backup seiner Virtuellen Maschinen hätte.

Dies ist zwar mit dem "VMware Consolidated Backup" möglich, doch diese Software ist sehr teuer.
Günstiger und einfacher(!) gehts mit dem kostenlosen Community-Script [http://communities.vmware.com/docs/DOC-8760|ghettoVCB].

Dieses script muss auf dem ESX-Server in der SSH shell gestartet werden und kann sogar Online-Backups im laufenden Betrieb mittels snapshots erzeugen! 😉

Virtuelle Maschinen (Konfiguration)

Diesen Fall musss man nur dann beachten, wenn man kein Hardware-RAID hat und stattdessen einfach zwei oder mehrere physische Disks hat mit denen man je einen Datastore macht und diese dann mittels eines Software RAIDs zusammenführt.

In diesem Fall werden die Konfigurationen der virtuellen Maschine nämlich nur auf dem "Haupt"-Datastore gespeichert. Fällt nun genau diese Disk aus, verliert man zumindest die Konfiguration der VM und muss diese neu erstellen.
Um dem vorzubeucgen kann man sich mittels dem folgenden Script, dass man per cronjob auf dem ESXi laufen lassen kann zumindest die Konfiguration sichern:

#!/bin/sh
 
MAIN_DS="/vmfs/volumes/local-disk1"
BACKUP_DS="/vmfs/volumes/local-disk2"
 
cd $MAIN_DS
for vmDir in `ls -d *`; do
  if [ ! -d $BACKUP_DS/$vmDir ]; then
    echo "$BACKUP_DS/$vmDir does not exist, creating it"
    mkdir $BACKUP_DS/$vmDir
  fi
  cp $vmDir/<em>.nvram $vmDir/</em>.vmsd $vmDir/<em>.vmx $vmDir/</em>.vmxf $BACKUP_DS/$vmDir/ 2> /dev/null
done

[stextbox id=“warning“ caption=“Achtung“]Generell ist bei ESX ein Setup ohne Hardware-RAID eine "Bastelei"; im privaten Bereich leider oft die einzige Möglichkeit um eine Virtualisierung zu betreiben.

Falls nun die primäre Festplatte ausfällt, wird die VM darauf nicht mehr weiterlaufen, insofern ist die Verfügbarkeit im Sinne des RAIDs nicht mehr vollständig gegeben.
Man kann aber mittels dieser Lösung die VM vom zweiten Datastore wieder starten und so relativ schnell wieder verfügbar machen.[/stextbox]

Related Links

What Files Make Up a Virtual Machine?
HLOG files.. Do I need to keep them?
Hetzner-Forum: ESX mit Soft-RAID betreiben

ESX: Cronjobs permanent machen

Beim ESX Server wird der Grossteil des Filesystems bei jedem neustart neu initialisiert und alle (manuellen) Änderungen gehen verloren.

Dies trifft leider auch für das crontabs file (/var/spool/cron/crontabs/root) zu.

Das einzige file, welches nicht neu erstellt wird ist: /etc/rc.local. – Dabei darf man sich, wenn man dieses file anschaut, nicht vom erwähnten Verzeichnis: "/etc/rc.local.d" verwirren lassenn! – Dieses (nicht-existente) Verzeichnis sieht zwar so aus, wie wenn es dazu gedacht wäre lokale init-scripts abzulegen, es wird aber, wenn man es erstellt ebenfalls bei jeden neustart gelöscht.

Will man nun z.B. sein eigenes crontab file erstellen, bei dem Änderungen nicht verloren gehen, ist folgende Vorgensweise möglich:

Ein Verzeichnis auf einem Datastore- (z.B. /vmfs/volumes/myDatastore/), und darin ein crontabs Verzeichnis erstellen.

Danach fügt man noch einen Eintrag in /etc/rc.local hinzu, der das cronfile bei jedem start an das schon vorhande anhängt:

mkdir /vmfs/volumes/myDatastore/crons
cp /var/spool/cron/crontabs/root /vmfs/volumes/myDatastore/crons/
echo "cat /vmfs/volumes/myDatastore/crons/root >> /var/spool/cron/crontabs/root" >> /etc/rc.local

Gebräuchliche OpenSSL Befehle

Allgmeine OpenSSL Befehle

Diese Kommandos dienen zum erstellen von CSRs, Zetifikaten, PrivateKeys und anderen verschiedenen Dingen.

PrivateKey erstellen

openssl genrsa -out example.com.key 4096

Zertifikat erstellen

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt

CSR erstellen

openssl req -out CSR.csr -key privateKey.key -new

Siehe dazu auch: SSL CSR erstellen für weitere Optionen, wie z.B: ein CSR für ein SAN Zertifikat.

CSR aus bestehendem Zertifikat erstellen

Hat man keinen CSR zum ursprünglich angelegten Zertifikat mehr, lässt sich das einfach aus dem bisherigen Zertifikat und Key erstellen:

openssl x509 -x509toreq -in certificate.crt -signkey privateKey.key -out $CSR.csr 

Neuer PrivateKey aus altem erstellen

openssl rsa -in privateKey.pem -out newPrivateKey.pem

Neuer CSR inklusive key erstellen

openssl req -new -newkey rsa:4096 -nodes -keyout www.example.com.key -out www.example.com.csr -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com"

Neues selbst signiertes Zertifikat inklusive key erstellen

openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" -keyout www.example.com.key -out www.example.com.crt

Überprüfen mit OpenSSL

Zertifikate, CSRs oder PrivateKeys überpüfen:

Certificate Request (CSR) prüfen

openssl req -text -noout -verify -in CSR.csr

PrivateKey prüfen

openssl rsa -check -in privateKey.key

Zertifikat anschauen

openssl x509 -text -noout -in certificate.crt

Einzelne Felder aus dem Zertifikat ausgeben

openssl x509 -enddate -noout -in certificate.crt
openssl x509 -subject -noout -in certificate.crt

PKCs12 file prüfen

openssl pkcs12 -info -in keyStore.p12

Debuggen mit OpenSSL

Falls man einen Fehler bekommt wie: „private doesn’t match the certificate“ oder einem installierten Zertifikat wird nicht vertraut, dann kann man das mit diesem Kommandos herausfinden.

Prüfen ob ein Zetifikat (.crt) zu einem Schlüssel (.key) passt

openssl x509 -noout -modulus -in certificate.crt | openssl md5; openssl rsa -noout -modulus -in privateKey.key | openssl md5; openssl req -noout -modulus -in CSR.csr | openssl md5

(alle md5-summen müssen gleich sein)

Mit der Website verbinden und Zertifikat sehen

openssl s_client -connect www.paypal.com:443

Hinweis: Bei der Verwendung von name based virtualhosts mittels SNI muss zusätzlich noch der Parameter -servername angefügt werden:

openssl s_client -servername www.paypal.com -connect www.paypal.com:443

Konvertieren mit OpenSSL

Mit den folgenden Kommandos kann man Zertifikate und Schlüssel in andere Format konvertieren um diese mit spezifischen Server- und Software- typen kompatibel zu machen.
z.B. eine normale PEM Datei, welche mit apache funktionieren würde in eine PFX (PKCS#12) Datei umwandeln und mit Tomcat oder IIS zu benutzen.

DER nach PEM

openssl x509 -inform der -in certificate.cer -out certificate.pem

PEM nach DER

openssl x509 -outform der -in certificate.pem -out certificate.der

PKCS12/PFX (.p12/.pfx) nach PEM

openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes

(You can add -nocerts to only output the private key or add -nokeys to only output the certificates)

PEM nach PKCS12/PFX (.p12/.pfx)

openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

Quelle: SSLShopper: The Most Common OpenSSL Commands

CA erstellen und mit dieser ein Zertifikat erstellen

Mit den nachfolgenden Befehlen kann man schnell eine CA erstellen udn damit ein Zertifikat signieren:

# Key erstellen
openssl genrsa -out ca.key 2048
# Root-CA Zertifikat mit diesem key erstellen
openssl req -x509 -new -nodes -key ca.key -sha256 -days 1024 -out ca.crt

## Zertifikat für domain: "example.org" erstellen
# Key für cert erstellen:
openssl genrsa -out example.org.key 2048
# CSR mit diesem key erstellen
openssl req -new -key example.org.key -out example.org.csr
# Zertifikat erstellen und mit der Root-CA signieren:
openssl x509 -req -in example.org.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out example.org.crt -days 500 -sha256

Nützliche aliase für bash

Wenn man in bash aliase anlegt kannt man die, doch recht schwierig zu merkenden Kommandos abkürzen:

alias csrview='openssl req -text -noout -verify -in'
alias crtview='openssl x509 -text -noout -in'
alias sslkeygen='openssl genrsa 4096 -out'

Nützliche Shell Scripts

Diese Scripts kann man im ~/bin/ Verzeichnis ablegen zum einfachen aufrufen.

checkcert
Zeigt die Checksummen von KEY, CRT und CSR an, damit man sofort sieht ob diese zusammenpassen.

#!/bin/bash

DOMAIN=$1
if [ -z "$DOMAIN" ]; then
  echo "usage: $0 <domain.tld>"
  exit 1
fi

if [ "$DOMAIN" != "" ]; then
  if [ -f  $DOMAIN.crt ]; then
    echo -n "CRT: "; openssl x509 -noout -modulus -in $DOMAIN.crt | openssl md5
  fi
  if [ -f  $DOMAIN.key ]; then
    echo -n "KEY: "; openssl  rsa -noout -modulus -in $DOMAIN.key | openssl md5
  fi
  if [ -f  $DOMAIN.csr ]; then
    echo -n "CSR: "; openssl  req -noout -modulus -in $DOMAIN.csr | openssl md5
  fi
fi

Festplatten im laufenden Betrieb entfernen („hot-remove“)

Will man unter Linux eine Disk „hot removen“, also im laufenden Betrieb herausziehen, muss man danach auch die Referenzen auf das Device entfernen.

Macht man dies nicht und „reisst die Disk einfach heraus“, erhält man solche unschönen Fehler im messages log, bzw. mit dmesg:

end_request: I/O error, dev sdd, sector 209715192
sd 0:0:3:0: SCSI error: return code = 0x00010000
end_request: I/O error, dev sdd, sector 0
sd 0:0:3:0: SCSI error: return code = 0x00010000
end_request: I/O error, dev sdd, sector 0

oder im LVM:

[root@server ~]# vgs
  /dev/sdd: read failed after 0 of 4096 at 0: Input/output error
  VG     #PV #LV #SN Attr   VSize   VFree
  [...]

Um die Festplatte im laufenden Betrieb richtig entfernen zu können, muss man nebst dem obligatorischen korrektem unmounten / aus der VG removen / pvremove / usw. folgendes tun um die System-Referenz auf das Device entfernen:

echo 1 > /sys/block/<DEVICE>/device/delete

Wobei <DEVICE> hier mit dem Device-Namen ersetzt werden muss, in unserem Fall z.b. „sdd“.

Man kann diese Prozedur im übrigen auch machen, wenn man die Festplatte schon heraus gezogen hat, um diese Meldungen verschwinden zu lassen. (:wink:)

Quellen