Tips und Tricks unter Linux

Hier sind einige kleinere Tips aufgelistet die sich so im Laufe der letzten Jahre als nützlich erwiesen haben.

Netzwerkgeschwindigkeit testen

Um die Geschwindigkeit der Netzwerkverbindung zwischen zwei Computern unter Linux zu testen gibt es eine ganz einfache Variante mit der Verwendung von netcat und dd.

Auf dem empfangenden Computer ist der folgende Aufruf zu tätigen: nc -l 33333 > /dev/null. Damit "hört" netcat auf dem Port 33333 (wahlweise einen anderen nehmen) und leitet die Ausgabe nach /dev/null um.

Auf dem sendenen Computer ist nun folgendes zu erledigen: dd if=/dev/zero bs=16000 count=100000 | nc -v empfaenger 33333. Dies sendet Daten von einer insgesamten Größe von 1,6 GB zu dem Computer "empfaenger" (dort kann auch eine IP-Adresse verwendet werden).

Wenn alles gut gegangen ist, dann sollte das Folgende ausgegeben werden:

Connection to empfaenger 33333 port [tcp/*] succeeded!
100000+0 Datensätze ein
100000+0 Datensätze aus
1600000000 Bytes (1,6 GB) kopiert, 13,5976 s, 118 MB/s

Mencoder benutzen

Um bestimmte Inhalte einer DVD 100% auf ein anderes Medium (z.B. Festplatte) zu bekommen kann mencoder verwendet werden. Je nach verwendeter Option ist es auch möglich gleichzeitigt die Ton- und Audiospur in ein anderes Format zu verwandeln. Zum 100%en übertragen und um zu vermeiden das A/V-Synchronisationsfehler auftreten kann mencoder wie folgt aufgerufen werden mencoder dvd://TITELSPUR -mc 0 -noskip -oac copy -ovc copy -o AUSGABEDATEI. So werden die Ton- und Audiospur zu 100% übertragen und -mc 0 und -noskip verhindert bestimmte A/V-Synchronisationsfehler. Die Verwendung des Parameters -aid 129 wählt die entsprechende Audiospur aus (z.B. Deutsch).

Rekursives Touch

Um bei bestimmten Dateien das Datum zu ändern, gibt es ja den Befehl touch. Um aber mehrere Dateien auch in Unterverzeichnissen zu bearbeiten hilft der folgende Befehl find . -print0 | xargs -r0 touch. Damit werden alle Datein in den Unterverzeichnissen rekursiv "getouched".

Benutzer anlegen

Da ab und zu mal Benutzer angelegt werden müssen und so Tools wie Webmin eigentlich zu mächtig sind, sollte man auch ab und zu mal die Konsole für sowas verwenden. Unter der Konsole als root eingeloggt gibt man einfach useradd -d /home/martin --create-home martin eingeben und schon wird der Benutzer mit seinem Homeverzeichnis angelegt. Man kann so auch mehrere Accounts mit demselben Verzeichnis einrichten. Ganz wichtig ist aber nicht zu vergessen das Passwort mit passwd martin zu setzen.

Ramdisk anlegen

Um unter Linux eine Ramdisk (also ein Laufwerk im Arbeitsspeicher) zu benutzen muss folgendes als Root in der Konsole gemacht werden.

Mit mk2fs /dev/ram0 wird eine Ramdisk angelegt und diese mit dem Ext2-Dateisystem "formatiert". Danach kann man dieses neue Laufwerk auch mounten z.B. mount /dev/ram0 /ramdisk, wobei das Verzeichnis /ramdisk erst angelegt werden muss (mit mkdir /ramdisk).

unexpected RCODE (REFUSED) resolving

Wenn diese Fehlermeldung in den Logs (z.B. /var/log/messages) auftaucht dann lehnt der betreffende DNS Server die gestellten Anfragen ab. Dies kann durch übermäßige Nutzung des DNS oder aber eine geänderte Konfiguration hervorgerufen werden. Auf jeden Fall werden sich dann in einem vorhandenem Logfile eines Webservers mehrere merkwürdige IP Adressen befinden, die es eigentlich nicht geben dürfte.

Telnet automatisieren

Falls immer wiederkehrende Aufgaben wie z.B. die Datensicherung auftreten ist eine Automatisierung erstrebenswert. Als Beispiel wurde einfachhalber ein automatisierter Telnetlogin gewählt (auch wenn man lieber SSH nehmen sollte). Normalerweise würde man sich mit telnet skylab.wgserver.org auf dem WGServer einloggen und nach der Eingabe des Benutzernamens und des Passworts Zugriff erlangen (Versuch zwecklos kein Telnet vorhanden ;) ). Da der Mensch von Natur aus faul ist möchte man natürlich dies nicht jedes Mal machen sondern sich ein kleines Skript dafür erstellen.
Notwendig für die Funktionsweise dieses Skriptes ist das Programm expect welches bei vielen Distrubtionen installierbar ist.
Nach der Installation kann folgendes Skript mit einem Texteditor geschrieben werden.

#!/usr/bin/expect -f
spawn telnet skylab.wgserver.org
expect -timeout 10 "Username:"
send "deraltemann"
expect -timeout 10 "Password:"
send "unddasmeer"
interact


Die erste Zeile legt expect als Programm für alle folgenden Befehle fest.
spawn startet eine Telnetsession zu dem angegebenem Rechner
expect wartet mit der Option -timeout 10 10 Sekunden auf eine Rückgabe der Telnetsession in der "Username:" steht.
Falls diese vorhanden ist wir mit send der Loginname "deraltemann" an diese Telnetsession gesendet usw.
interact übergibt dem Benutzer wieder die Kontrolle über die Telnetsession.

Mit Hilfe von expect lässt sich dieses Beispiel auch für viele andere Anwendungen umsetzen.

Starting MythTV server: mythbackendSession management error

Starting MythTV server: mythbackendSession management error: Authentication Rejected, reason : None of the authentication protocols specified are supported and host-based authentication failed

Dieser Fehler ereilte mich als ich versuchte auf einem Rechner testweise MythTV (externer Link) zu installieren. Bei der Fehlersuche stellte ich fest das in der Datei /etc/mythtv/mysql.txt sich folgender Eintrag befand DBHostName=wostok.wgserver.org. Da dieser Eintrag verschieden ist von dem Eintrag bind-address=127.0.0.1 in der Datei /etc/mysql/my.cnf (Der verwendete MySQL Server auf diesem Rechner erlaubt nur den lokal Zugriff), entsteht dieser Zugriffsfehler. Nachdem ich den Eintrag in DBHostName=127.0.0.1 geändert habe startete das Backend von MythTV problemlos.

XMAME: ERROR: required files are missing, the game cannot be run.

Wenn dieser Fehler bei Xmame auftritt und vorher etwas in dieser Art zu lesen ist :

loading rom 0: d40_12.rom
loading rom 1: d40_11.rom
loading rom 2: d40_10.rom
loading rom 3: d40_13.rom
loading rom 4: d40_03.rom
loading rom 5: d40_04.rom
loading rom 6: d40_15.rom
loading rom 7: d40_16.rom
loading rom 8: d40_05.rom
loading rom 9: d40_06.rom
loading rom 10: d40_07.rom
loading rom 11: d40_08.rom
loading rom 12: d40_01.rom
loading rom 13: d40_02.rom
done
d40_12.rom  NOT FOUND
d40_11.rom  NOT FOUND
d40_10.rom  NOT FOUND
d40_13.rom  NOT FOUND
d40_03.rom  NOT FOUND
d40_04.rom  NOT FOUND
d40_15.rom  NOT FOUND
d40_16.rom  NOT FOUND
d40_05.rom  NOT FOUND
d40_06.rom  NOT FOUND
d40_07.rom  NOT FOUND

dann sollte man sich daran erinnern das irgendwo in den Tiefen der Anleitung steht das man die Roms nicht entpackt in das ROM-Verzeichnis kopieren soll. Dieser Fehler tritt nur dann auf, wenn man die gepackten Roms in das Verzeichnis entpackt.
Also nochmal : Die Roms nicht entpacken.