Weboberfläche der FRITZ!Box

Meist wird die öffentliche IP-Adresse in der Konfigurationsoberfläche des Routers angezeigt, und kann von dort ausgelesen werden. Man erspart sich somit die Verbindung nach "draußen", und ist also von der Verfügbarkeit der o.g. Seiten unabhängig.

Zum Beispiel könnte der entsprechende Einzeiler für die FRITZ!Box-Serie von AVM so aussehen:

$ wget 'http://fritz.box/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=home&var:pagename=home' 
-q -O - | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>' | 
grep -Ev "^0+\."


sed : replacing a text in a file

% cat file.txt | sed -e 's/text/replacement/g' > result.txt
sed -i ’s/text/replacement/g’ file.txt

Mit diesem Skript lassen sich alle Dateien, die auf ein bestimmtes Muster passen, wie zum Beispiel "*.mp3", von einem Verzeichnis in ein anderes kopieren. Dabei bleibt die Unterverzeichnis-Struktur erhalten. Das Skript verwendet dazu rsync. Wenn ihr es verwenden wollt, müsst ihr dieses Paket installiert haben.

recmv /home/ich/musik/ /home/du/musik "*.mp3"


Prüfen, ob Prozess aktiv

Das Standard-Tool zur Anzeige laufender Prozesse ist ja eigentlich

ps
. Um damit aber schnell zu erkennen, ob ein Prozess mit einem bestimmten Namen läuft und wie die Prozess-ID (PID) lautet, müssen Sie ps schon mit grep verketten, das alle nicht zutreffenden Prozesse aus der Antwort ausfiltert. Mit
pgrep
ist das dagegen ganz leicht: Einfach den Prozessnamen als Parameter angeben und es liefert die PIDs aller Prozesse zurück, bei denen die angegebene Zeichenfolge im Namen vorkommt. Es gibt noch zwei interessante Zusatzparameter für
pgrep
. So finden Sie zum Beispiel heraus, ob der Beagle-Dämon für den User "otto" läuft:

pgrep -u otto beagled


Um statt der Prozess-ID den Namen als Antwort zu erhalten, verwenden Sie den Parameter
-l
. So erhalten Sie zum Beispiel die Namen aller aktiver Prozesse, die mit kde zu tun haben:

pgrep -l kde

Menschliche Ausgabeformate

Viele Linux-Kommandos, die Dateigrößen anzeigen, wie etwa der Directory-Lister
ls
oder die Anzeige des freien Plattenspeichers
df
, liefern als Standard ein Ergebnis, das für menschlichen Gebrauch realtiv ungeeignet ist. Das muß auch so sein, weil viele Skripts diese Ergebnisse der Kommandos aufnehmen und weiterverarbeiten. Um dennoch lesbare Ergebnisse zu erreichen, verfügen viele Programme über den Parameter
-h
, wie "human", der beispielsweise statt "6434660" die Variante "6.4G" ausgibt.


Filegrößen in lesbarerm Format

 


Datei-Infos im MC

Der Midnight Commander zeigt von Haus aus immer die Dateinamen samt Größe und Datum an:

Midnight Commander

Manchmal braucht man aber mehr Informationen, als die magere Spalte zeigen kann. Dafür drücken Sie auf

[Alt]+[T]
. Jetzt nimmt das ausgewählte Verzeichnis den gesamten Bildschirm ein

Midnight Commander


Drücken Sie nochmals

[Alt]+[T]
, so verkleinert der Midnight Commander die Darstellung wieder auf die Hälfte, zeigt aber anstelle des Datums die Benutzerrechte an:

Midnight Commander

Um den Urzustand wieder herzustellen drücken Sie abermals
[Alt]+[T] 

Der Midnight Commander ist das Werkzeug zur Dateiverwaltung unter Linux. Er erinnert an den Norton Commander und arbeitet mit Pfeil- und Funktionstasten. Doch manchmal funktionieren die Funktionstasten nicht. Meistens passiert das dann, wenn man über Telnet oder eine nicht sauber eingestellte Shell auf den Linux-Server zugreift.

Erste Abhilfe gegen den Funktionsfrust bietet die Kombination aus

[Esc]+[0-9]
und der entsprechenden Zifferntaste. Wenn also
[F5]
zum Kopieren von Dateien nicht funktioniert, dann probieren Sie es mit
[Esc]
und
[5]
.
Beachte: Drücken Sie die Tasten nacheinander, nicht gleichzeitig.
Info: Die Taste
[F10]
bilden Sie mit
[Esc]
und
[0]
nach.



Midnight Commander History aufrufen

In der Linux-Kommandozeile genügt ein Druck auf die Taste

[Pfeil oben]
, um den zuletzt verwendeten Befehl aufzurufen.
Das geht auch mit dem Midnight Commander. Drücken Sie hier nacheinander die Tasten
[Esc]
und
[h]
.
Daraufhin erscheint eine Liste der zuletzt eingegebenen Befehle.


History-Funktion im Midnight Commander

Anzeige Last Logins

Um zu erfahren, wer sich zuletzt auf Ihrem Linux-Rechner angemeldet hat, tippen Sie den Befehl

last
ein und drücken Sie
[Return]

Wenn Sie die letzten Anmeldungen einzelner Benutzer ansehen wollen, tippen Sie
 last
gefolgt vom Benutzernamen ein, zum Beispiel also
last otto


find Fehlermeldung unterdrücken

Wer in Linux als normaler User mit

find
sucht, bekommt häufig Meldungen dass der Zugriff auf Ordner nicht erlaubt ist. Um diese Meldungen zu unterdrücken, suchen Sie mit
find / -name *.bla 2> /dev/null

Damit werden die Fehlermeldungen ins Nirvana geschrieben und Sie haben mehr Überblick mit
find


Dateien nach Datum finden

Man kann von Linux halten was man will. Aber in Sachen Kommandozeile und Tools steckt das System Windows allemal in die Tasche. Ein Beweis dafür ist find, ein Utility, komplex genug, um darüber ein vierbändiges Werk zu schreiben. Wie wäre es zum
Beispiel: mit find alle Dateien in einem Verzeichnis zu suchen, die innerhalb der letzten 24 Stunden erzeugt wurden:

find . -name '*.doc' -type f -mtime -1

Der Befehl sucht danach im aktuellen Verzeichnis (das ist der Punkt) und dessen Unterverzeichnissen nach allen Dateien mit der Endung
*.doc
, die weniger als einen Tag alt sind. Zuständig für diese Altersfragen ist der Parameter
-mtime
.
Die Zahl dahinter steht für Tage, also
-mtime -1
für den zurück liegenden Tag, sprich die letzten 24 Stunden. Abhängig vom Vorzeichen steuern Sie die Tage.
Beispiel:
find . -name '*.doc' -type f -mtime +1

und heraus kommen alle Dateien und Verzeichnisse, die älter als einen Tag sind. Steht die Zahl ohne Vorzeichen da, sucht Find Dateien, welche die angegebenen Tage plus einen alt sind. Mit
-mtime 5
sucht find also alle Files, die zwischen fünf und sechs Tagen auf dem Buckel haben.
Was das find-Kommando erst richtig mächtig macht, ist das Ausführen weiterer Kommandos mittels der Option
-exec
Wenn man also z.B. auf seinem System alle Core-Dumps (das sind Speicherauszüge, die UNIX-Systeme beim Absturz von Programmen auf die Platte manchmal schreiben), die älter als 3 Tage sind, löschen will, so gebe man ein:
find / -name core -mtime +3 -exec rm {} \;

So etwas kann man z.B. auch in einem Cron-Job verankern und zeitgesteuert ausführen lassen.


Große Dateien finden

Da ich oft unter Platzmangel auf meiner Platte leide wollte ich mal alle "großen" Dateien finden und gegebenenfalls löschen.

ls -lahS $(find / -type f -size +10000k)


Findet alle Dateien die größer sind als 10MByte und listet sie der Größe nach auf. Dabei sorgt der Befehl
ls -lahS
für das Auflisten der Dateien. Die Dateien werden mit l im langen Format ausgegeben. Der Parameter a zeigt alle Dateien, auch die versteckten. Dank h erscheinen alle Größenangaben in gut lesbarem Format.


Mit $ wird das Ergebnis des nachfolgenden Befehls als Parameter an ls übergeben. Sprich, es erscheinen nur Dateien, die größer sind als 10.000 Kilobyte.
Hinweis: Wenn Sie den Befehl nicht als root ausführen, werden Sie einige Male Permission denied zu lesen bekommen.

Falls ihr nur euer Homeverzeichniss durchsuchen wollt.

ls -lahS $(find ~/ -type f -size +10000k)

Falls man das aktuelle working directory durchsuchen will:

find $PWD -type f -size +10000k -exec ls -lahS {} \;


Nur Verzeichnisse anzeigen


Bei Ubuntu (2.6.24-XX-generic) kommt Fehlermeldung:

alias ldir="find . -type d -maxdepth 1"

# find: Warnung: Sie haben die Option -maxdepth nach dem Argument -type angegeben, aber Optionen sind nicht positionssensitiv (-maxdepth beeinträchtigt sowohl Tests, die vor ihr als auch nach ihr definiert sind). Bitte geben Sie Optionen vor anderen Argumenten an.

alias ldir="find . -maxdepth 1 -type d"


Suchen in man-Pages

Mit dem Aufruf von

man Befehl
erhalten Sie das digitale Handbuch zum jeweiligen Befehl. Oft allerdings sind diese Texte unendlich lange.
Eine Hilfe dabei ist die Suchfunktion in
man
. Wenn die Seiten aufgerufen sind, geben Sie einfach / gefolgt von einem Suchbegriff ein.
Rufen Sie z.B.
man bash
auf. Geben Sie dann
 /prompt
ein, um weitere Angaben über das Prompt zu erhalten.
Wenn Sie nicht gleich an der richtigen Stelle landen, geben Sie nochmals / gefolgt von einem
[Return]
ein. Damit wiederholen Sie die letzte Suche und
man
findet die nächste Stelle mit der Zeichenkette
prompt.


Dateien suchen

Gerade Linux-Umsteigern von der Windows-Welt fällt es oft schwer, sich an Namen und Ort einer bestimmten Konfigurations-Datei oder eines Kommandos unter Linux zu erinnern. Dagegen gibt es mehrere Lösungen:
Das Kommando

locate
findet alle Dateien, die die genannte Zeichenfolge im Pfad oder dem Dateinamen selbst haben. Das geht ziemlich schnell, weil die Suche nicht live im Dateisystem, sondern in einer Datenbank erfolgt, die vom System automatisch in der Nacht upgedatet werden sollte. .

Der find-Befehl erfordert keine Datenbanken und funktioniert mit den unterschiedlichsten Problemstellungen:

find [DIR] -name [NAME.EXT]

Beispiel:

$ find /home brief.txt

Daneben koennen mit find auch Dateitypen gefunden werden

find . -type f (sucht nach Dateien)
find . -type d (sucht nach Directories)
find . -type l (sucht nach Sym-Links)


Wirklich mächtig wird dieser Befehl in Kombination mit anderen Befehelen. Mit folgenden Kommandos lassen sich die Dateitypen (File/Driectory) suchen und die Zugriffsrechte setzen.
find /home -type f -exec chmod 600 {} \;
find /home -type d -exec chmod 750 {} \;


Live-Übertragung für Logfiles

Das Kommando

tail
zeigt unter Linux ganz unspektakulär die letzten Zeilen einer Textdatei an. Fügen Sie allerdings den Parameter
-f
hinzu, dann springt das Kommando nicht einfach zur Kommandozeile zurück, sondern zeigt dynamisch die letzten Zeilen an, bis Sie das Programm per
[Strg]+C
beenden.
Sinnvoll ist diese Option beispielsweise bei allen Log-Dateien, die oft neue Inhalte bekommen.


Wollen Sie etwa live sehen, was gerade auf Ihrem Webserver passiert, dann wenden Sie doch einfach den tail-Befehl auf das Server-Log an:

tail -f /var/log/httpd/access_log


Linux-Befehle als Alias definieren

Geben Sie an der Linux-Konsole einmal den Befehl

alias
ein. Die daraufhin erscheinende Liste zeigt, mit welchen Kurzkommandos Ihr Linux eingerichtet ist.
So ist es bei vielen Linux-Varianten heute üblich, DOS-Umsteigern über vordefineirte Kommandos wie
dir
oder
md
die Arbeit mit Linux zu erleichtern.
Das wird eben nicht über wirklich neu Befehle, sondern Aliase ermöglicht, also Synonyme für Eingaben an der Befehlszeile.

Linux-Aliase

Sie können sich aber auch ganz leicht selbst einen Alias einrichten. Angenommen, Sie experimentierten mit dem Apache-Webserver und müssen darum oft das Kommando

/etc/rc.d/init.d/apache restart

eintippen, um den Server mit einer geänderten Konfiguration neu zu starten.

Definieren Sie sich einfach ein eigenes Kommando wwwneu, um das gleiche mit weniger Tipparbeit zu bewirken:
alias wwwneu=´/etc/rc.d/init.d/apache restart´

alias loghtml='tail -f log/access_w.log | egrep "GET\ [^\ ]+\.html"'
Statt einer langen Anweisung müssen Sie nur noch
loghtml
eingeben um die aktuell abgerufenen HTML-Seiten anzeigen zu lassen.


Kommandos herausfinden

Manchmal kennt man den Namen eines Befehls nicht genau. Da hilft es dann auch wenig, wenn man mit

man xxx
in den Manual-Pages nachforscht.
Die bessere Lösung:
Mit dem Befehl
apropos
lassen Sie das System seine Datenbank von Kommando-Kurzbeschreibungen durchforsten. Können Sie sich z.B- nicht mehr erinnern, wie ein bestimmtes SQL-Utility hieß, geben Sie einfach ein
apropos sql
und alle zugehörigen Befehle erscheinen
Haben Sie dann einen Befehl dingfest gemacht, können Sie per
man
die Hilfedatei dazu anzeigen lassen.

Eine Liste der Tastenbelegung in

man
gibt´s mit der Eingabe eines Fragezeichens.


Mail aus der Linux-Kommandozeile senden

Mit Linux können Sie ganz einfach eine Mail aus der Kommandozeile heraus senden. Das ist ideal für kurze Tests oder für Scripts, die automatisch Statusmeldungen an einen Admin senden sollen.
Tippen Sie auf der Kommandozeilenebene folgende Befehlszeile ein:

echo "Test Nachrichtentext" | mail -s"TestEMail" test@test.de

Mit einem
[Return]
wird die Mail auf den Weg geschickt. Achten Sie darauf, dass hinter dem Parameter
-s
kein Leerzeichen stehen darf.


Linux Netzwerk-Verkehr aufzeichnen mit tcpdump

Wenn etwas in Ihrem Linux-Netzwerk nicht richtig funktioniert, lohnt es sich, einen Blick auf

tcpdump
zu werfen.

Dieses Tool schreibt live alle Protokoll-Header und gibt sie auf dem Bildschirm aus. Sie überwachen damit also den kompletten Netzverkehr zwischen dem Linux-Rechner und dem Netzwerk. Falls Sie an Stelle eines Switches einen Hub einsetzen, können Sie sogar den kompletten Datenverkehr im Netz überwachen. Allerdings erschlägt die schiere Menge der Informationen dann jeglichen Einsatzzweck. Aber zurück zum Anfang:
Falls Sie das Gefühl haben, irgendetwas stimmt nicht zwischen Linux-Rechner und Netz, dann starten Sie
tcpdump
. Sofort sehen Sie den Datenverkehr. Meist erscheinen regelmäßig Meldungen des Address Resolution Protocol
arp 


Tcpdump Ausgabe

Diese Rundsendungen mit der Frage "who-has", deutsch "wer hat?" dienen der Zuordnung von Ethernet-Adressen zu IP-Adressen. Darüber hinaus lässt sich hier aber auch feststellen, ob der TCP-Verkehr klappt. Versuchen Sie bei laufendem TCP-Dump einmal, per http auf den Rechner zuzugreifen. Sofort erscheint eine Reihe von http-Header-Meldungen.
Mit tcpdump können Sie also gezielt überwachen, welche Anwendungen wie kommunizieren. Bei Fehlern erhalten Sie hier auch wertvolle Meldungen, die Ihnen weiter helfen. Ganz abgesehen davon sehen Sie einmal, was sich überhaupt im Netzwerk tut und wer sich mit wem unterhält.

Natürlich können Sie auch einschränken, was tcpdump überwacht. Wenn Sie z.B. nur den Datenverkehr über http betrachten wollen, geben Sie ein:
tcpdump port 80


Denn über diesen Port kommen per Standard alle http-Verbindungen zu Stande. Alternativ können Sie auch nur einen bestimmten Rechner überwachen:
tcpdump host 192.168.0.1


Tipp: Verwenden Sie tcpdump ausschließlich von der Konsole Ihres Linux-Rechners aus. Falls Sie ihn per Telnet oder ssh von einem anderen Rechner aus starten, protokolliert tcpdump ständig den Datenverkehr zwischen dem Terminal und dem Linux-Rechner, und erzeugt so nur neuen Datenverkehr.


Offene Internet-Verbindungen anzeigen

Jeder Computerbesitzer will wissen, welche Internet-Kanäle gerade offen sind. Unter Linux eignet sich hierzu das Tool lsof dient recht gut. Eigentlich dient es zum Auflisten offener Dateien. Mit einem speziellen Parameter aufgerufen, zeigt es stattdessen aber aktive und inaktive Verbindungen an.
Ein sinnvoller Aufruf ist z.B.

lsof -i -P 


Der Parameter

-i
sorgt für die Darstellung der Netzwerkverbindungen und

-P
bewirkt, dass für die verwendeten Ports nicht Namen sondern numerische Werte kommen.


Die Anzeige auf diesen Befehl hin könnte z.B. so aussehen:

lsof-Beispiel


Mit

LISTEN
ausgezeichnete Verbindungen stammen von lokalen Serveranwendungen, die auf einen Kommunikationspartner warten.
ESTABLISHED
deutet dagegen auf eine aktive Kommunikation hin.
Der Eintrag in der ersten Spalte führt das jeweils verantwortliche Programm auf. In der letzten Spalte sehen Sie bei aufgebauten Verbindungen die IP-Adresse oder den Hostnamen der Gegenstelle.


Webentwicklung: Headerinformationen anzeigen lassen

Bei jedem Abruf eines Dokuments von einem Webserver werden so genannte Headerinformationen gesendet, mit denen der Server der Gegenstelle Informationen über das Dokument mitgibt.
Dazu gehört beispielsweise der Typ des Dokuments, eventuelle Fehlermeldungen, Umleitungsbefehle oder Hinweise zur Gültigkeitsdauer, mit denen der Browser seinen Cache-Mechanismus optimieren kann.
Webentwicklern geben diese Header-Daten wichtige Zusatzinfos - gerade dann, wenn nicht alles so klappt, wie vorgesehen. Nur zeigt der Browser diese Informationen nicht an.
Mit dem Programm

wget
, das normalerweise dazu dient, ein Webdokument oder eine ganze Site auf Festplatte speichern, macht man die Informationen aber sichtbar. Dazu dient der Parameter
-S
, der beim Abruf jede empfangene Headerzeile darstellt.

Wget mit Headerinfos

Wget ist in jedem aktuellen Linux enthalten. Die Windows-Version von wget gibt es unter http://wget.sunsite.dk/.

Auch Dateien mit 100 MByte oder mehr kann man mit dem normalen Browser laden. Wenn aber die Verbindung einfriert oder abbricht, war meistens alles umsonst und man muss den Download von neuem beginnen.
Das Programm wget dagegen kommt auch bei großen ftp- oder http- Transfers nicht aus dem Tritt und kann in einem neuen Anlauf einen zuvor abgebrochenen Download weiterführen.

Hier ein Aufruf mit typischen Optionen:

wget -c -t10 ftp://xyserv.de/pub/update.bin


Mit
-c
setzt wget einen zuvor abgebrochenen Datei-Transfer fort. Der Parameter
-t10
hilft mit Servern, bei denen der Verbindungsaubau oft fehlschlägt. Bei Problemen wird
wget
hierdurch 10 neue Anläufe starten, falls notwendig.

Das Netzwerk-Tool
wget
beherrscht die Protokolle http, https, ftp und kann auch mit Proxies umgehen. Die Auswahl treffen Sie einfach durch das bei URLs übliche Voranstellen des gewünschten Protokolls. Probieren Sie es auf jeden Fall zuerst einmal mit ftp://, da diese Variante den besten Datendurchsatz erreicht.


PHP-Information auf Kommandozeile anzeigen lassen

Sie arbeiten gerade auf der Linux-Shell und brauchen Infos über die PHP-Version? Dann tippen Sie auf der Shell einfach folgenden Befehl ein:


php -r 'phpinfo();' | less

Danach gibt es PHP-Informationen zur Version, zu den einkompilierten Modulen und so weiter


Übrigens: Mit dem Parameter

-r
können Sie auch weitere Befehle interaktiv ausführen lassen. Das erlaubt den Einsatz von PHP auch in Shell-Scripts.


Linux-Befehle in Reihe eingeben

In der Linux-Kommandozeile können Sie mehrere Befehle pro Zeile eingeben, wenn Sie diese mit einem Strichpunkt trennen.
Die beiden Befehle wechseln in das Heimatverzeichnis und geben dessen kompletten Namen aus.

cd ~; pw



Linux Kernel-Version anzeigen lassen

Wenn Sie sich auf die Schnelle anzeigen lassen, welche Kernel-Version in Ihrem Linux aktiv ist, geben Sie einfach ein

cat /proc/version


Webserver-Managment - Hochgeladene Files gruppenübergreifend zugänglich machen

Basteln mehrere Benutzer mit separaten Login-Namen an einem gemeinsamen Webprojekt, gibt es auf Linux-Systemen oft ein Rechteproblem. Denn mit den üblichen Grundeinstellungen erhalten die Mitglieder der eigenen Gruppe nur Lese- aber keine Schreibrechte. In der Folge kann jeder nur seine eigenen Dateien mit neueren Versionen überschreiben, nicht aber die der anderen Teammitglieder.

Das Problem liegt dabei an der so genannten Umask-Einstellung. Diese regelt, welche Rechte eine neu erzeugte Datei hat. Wenn Sie einen Shell-Zugang haben, geben Sie einfach den Befehl

umask
ein und erhalten die für Ihr Konto gültige Einstellung. Mit der üblichen Grundeinstellung von
022
wird z.B. das Schreibrecht für die Gruppen deaktiviert. Um die gewünschten vollen Gruppenrechte zu erhalten, müsste die Umask einen Wert von
002
haben. Die Maske auf der Shell direkt zu ändern, hat leider gar keine Auswirkung für den Dateitransfer per FTP oder der sicheren Alternative scp.

Stattdessen müssen Sie für FTP in der Server-Konfiguration nach einer entsprechenden Einstellmöglichkeit suchen. Finden Sie die nicht, ist die letzte Abhilfe das FTP-Clientprogramm, wo sich oft die gewünschten Rechte für Fileuploads setzen lassen. Allerdings setzt diese Variante voraus, dass wirklich jeder Teilnehmer am Projekt diese Einstellung auch tatsählich in seinem Transfer-Programm vornimmt.


Bei scp, das für seine Funktion den sicheren Shellzugang per ssh nutzt, müssen Sie die umask in der Datei vornehmen, die bei Login automatisch abgearbeitet wird. Bei den meisten Linux-Varianten ist das die Datei

.bash_profile
, die es im Home-Verzeichnis jedes Benutzers gibt.
Öffnen Sie diese Datei bei jedem für Projektteilnehmer und tragen dort ein

umask 002


Bei manchen Linux-Distributionen ist der umask-Befehl dort schon eingetragen und muss nur noch entsprechend angepasst werden. Hier zum Beispiel der Anfang der
.bash_profile
von einem Debian-System

# ~/.bash_profile: executed by bash(1) for login shells. 
# see /usr/share/doc/bash/examples/startup-files for examples
# umask in /etc/profile
umask 002


Es gibt bei jedem Linux auch die Möglichkeit die Umask einmalig generell für alle Benutzer zu ändern. Das ist natürlich einfacher, eröffnet aber eventuell an anderer Stelle unerwünschte Zugriffsrechte.
Sie finden diese generelle Einstellung in der Regel in der Datei
/etc/profile. 


Problem und Fehler beim E-Mail Server erkennen

Manches E-Mail-Programm gibt bei Problemen in der Kommunikation mit dem Mailserver nur wenig hilfreiche Meldungen zurück.
Da das Mail-Protokoll aber im Klartext abläuft, kann man über einen Telnet-Client sehr einfach selbst mit dem Mailserver reden.
Rufen Sie dazu das Programm Telnet mit dem Rechnernamen Ihres zuständigen Mailservers und der Port-Nummer 110 auf, die für das Abholen von E-Mail verwendet wird. Der Aufruf könnte z.B. lauten:

telnet mail.xy.de 110


Der Mailserver antwortet Ihnen darauf mit einer Meldung:
+OK POP3 server mail.xy.de ready <00894.1938087963@mail.xy.de>


Nun geben Sie das Kommando
user
gefolgt von Ihrem Usernamen und
pass
gefolgt von Ihrem Passwort ein. Sie sehen dabei Ihre Eingaben nicht, müssen also ohne Rückmeldung tippen.
Wenn nun wieder eine OK-Meldung erscheint, ist alles in Ordnung.
Ansonsten kommt eine mit
ERR
beginnende Meldung, die Ihnen bei der Fehlersuche helfen sollte.
Wenn alles klappt, können Sie auch selbst Mail-Client spielen:
Mit dem Kommando
LIST
lassen Sie sich alle vorliegenden Nachrichten mit Ihrer laufenden Nummer und der Größe anzeigen.
RETR
gefolgt einer der angezeigten Nummern zeigt diese Nachricht an.
Über
QUIT
beenden Sie die Kommunikation mit dem Mailserver.


Mails an root lesen

Problem:

Mails an root werden von den meisten Einsteiger-Admin's nicht gelesen. Dabei sind sie essentiell wichtig. Z.B. wird man über fehlerhafte Cronjobs informiert oder wenn ein anderes Programm was zu meckern hat. Andererseits kann ein mbox auch mal eine ganze Menge an MegaBytes auf der Festplatte weg nehmen. Und vor allem: Wenn der eigene Server als Spam-Schleuder missbraucht wird, kommen massenhaft Mails an postmaster aka root an. So bekommt man solche Vorfälle sofort mit, anstatt erst später, wenn der Mail-Server nicht mehr reagiert.

Lösung 1. Mail auf dem Server lesen:

Das ist die einfachste Methode, man muß sich aber ständig dafür (per ssh) einloggen. Dazu nutzt man einfach die Kommandozeilen Email-Clients

pine
oder
mutt
. Beide Clients haben eine ausführliche Online-Hilfe und sind über die Cursor-Tasten bedienbar.

Lösung 2. root-Mails auf andere Emails weiterleiten:

Hier führen viele Wege nach Rom. Im wesentlichen ist der Weg abhängig vom System, der genutzten Admin-Software und natürlich dem MTA. Schaut Euch einfach mal folgende Vorschläge an und sucht Euch den besten raus.

2.1 Änderung der
/etc/aliases
:

Diese Version nenne ich direkt als erstes, weil es die einfachste und fast immer umsetzbare Version ist. (Achtung: Nicht alle Qmail-Installationen beachten diese Datei! Vorallem die Plesk-Qmail nicht.)
In der Datei

/etc/aliases
finden wir viele Einträge folgender Art:
postmaster:     root

Was hindert uns also daran, diese Datei entsprechend zu erweitern? In der Regeln nichts. Ein passender Eintrag kann z.B. so aussehen:

root:     web1p1

Zu beachten: Nach jeder Änderung braucht der Mailserver einen

restart
, damit er die Datei neu einließt.Achtung: Beachtet je nach MTA folgendes:

2.2 Wenn Procmail als MDA arbeitet:

Procmail ließt (zusätzlich zu einer

~/.procmailrc
) die Datei
~/.forward
aus. Dort kann einfach eine Weiterleitung eingetragen werden:

email@gmx.de
web1p1
\root

Die erste Zeile verschickte es an einen GMX-Account. Die zweite Zeile legt die Mail im Postfach web1p1 ab, und die dritte Zeile ist etwas kniffliger: Sie legt die Mail im root-Postfach ab ohne die vorhandene .forward-Datei zu beachten. (Dafür steht der Slash davor.)
Natürlich wäre die 3.Zeile als einzige Zeile sinnentleert. Sie macht also lediglich in Kombination mit einer der anderen Zeilen davor Sinn.

2.3 Qmail mit
.qmail
:

Solange Qmail selber als MDA tätig ist, ließt er die Datei

/root/.qmail
bevor er die Emails an root ausliefert. Hier kann man ebenfalls eine Weiterleitung eintragen:

&info@meine-domain.de
./Maildir/

Zu beachten ist hier, daß diese Datei von oben nach unten abgearbeitet wird, bis eine Zeile ohne Fehler fertig ist.

./Maildir/
kommt also nur zum tragen, wenn die vorherige Zeile einen Fehler auswirft. Bei einigen Systemen ist (vor allem bei einer Plesk-Installation) ist eine Datei
/var/qmail/aliases/.qmail-root
vorhanden. Diese wird vor
/root/.qmail
gelesen/ausgewertet. Daher muß der o.g. Lösungsweg in dieser Datei umgesetzt werden.



Lästige IP-Adressen auf dem Webserver blockieren

Mit einem Eintrag in die Datei

.htaccess
in Ihrem Webserver-Verzeichnis können Sie IP-Adressen sperren. Das ist z.B. dann sinnvoll, wenn Sie feststellen, dass von einer Adresse besonders viele Anfragen auf Ihrem Server kommen und so Ihr Datenvolumen unnötig steigt.
Die Syntax sieht so aus:
order allow,deny
deny from 80.xx.xx.xx
allow from all

Mit diesem Eintrag werden alle IP-Adressen zugelassen, die
80.xx.xx.xx
bleibt jedoch ausgesperrt.

Mit der Angabe von Adressräumen können Sie diese auch komplett sperren, z.B.
deny from 192.168


Damit kommt kein Rechner an Ihren Webserver, dessen IP mit 192.168 beginnt.
Achtung: Stellen Sie zunächst anhand Ihrer Logs fest, ob es sich bei dem Störenfried nicht um den Spider einer Suchmaschine wie Google handelt.

IP-Adressen blockieren mit .htaccess

Die Spider erkennen Sie an eindeutigen Kennungen:

Diese Spider sollten Sie gewähren lassen und sie gegebenenfalls über die Datei
robots.txt
steuern.
#!/bin/sh  MYARRAY[0]=`ls -fl | grep -v "^d" | awk '{print $9;}'`  echo "Dateien in $PWD: ${MYARRAY[0]}"
#fabian@TuX:~$ ./bla.sh 
Dateien in /home/fabian:
.bashrc
.bash_profile
.bash_history
.viminfo
bla.sh

http://85.214.55.15:888

 ntop -i eth0 -w 888 -u wwwrun
ps aux | grep -i ntop
# chown ntop.ntop /var/lib/ntop
# chown ntop.ntop -R /var/lib/ntop/*

echo "root: username" >> /etc/aliases
habt ihr keinen normalen useraccount auf dem recher? ansonsten per procmail nachsenden lassen

 

var/log/apache2/ ---> suphp-log darf nicht größer als 2GB

qmail log auf info stellen etc/qmail ---> alles wird gelogt
var/log/mail.info


Create File of a Given Size ... with random contents

Show progress during dd copy

dd is a popular, generic command-line tool for copying files from 1 location to another. It is often used to copy entire disk images.
Like many Linux command line tools, it operates silently unless something unexpected happens. Its lack of visual progress feedback is a nice feature for scripting. However, it can leave you wondering about its progress if you are interactively dd-copying a large disk.
To illustrate, you run the following (valid, but perhaps not very useful) dd copy:

$ dd if=/dev/random of=/dev/null bs=1K count=100 



It will run for a few minutes as it copies (and immediately discards) 100 blocks of randomly generated data, each of size 1 KB.
To get a progress report while dd is running, you need to open another virtual terminal, and then send a special USR1 signal to the dd process.
First, find out the process id of the dd process by running the following in the new virtual terminal.
$ pgrep -l '^dd$'
8789 dd
$


To send the USR1 signal to the dd prcoess:
$ kill -USR1  8789
$


Note that as soon as the USR1 signal is detected, dd will print out the current statistics to its STDERR.
$ dd if=/dev/random of=/dev/null bs=1K count=100
0+14 records in
0+14 records out
204 bytes (204 B) copied, 24.92 seconds, 0.0 kB/s


After reporting the status, dd will resume copying. You can repeat the above kill command any time you want to see the interim statistics. Alternatively, you can use the watch command to execute kill at a set interval.
$ watch -n 10 kill -USR1 8789
$ cp ~/.mc/ini ~/.mc/ini.bak
$ cat mccolour.txt >> ~/.mc/ini

Trick: Protecting content with .htaccess files

.htaccess files are very versatile, and can easily become very complex. This document contains enough information to set simple access restrictions/limits on a directory in your web space.
Remember to upload .htaccess files, and .htpasswd files using ASCII mode. This is an option is available in most FTP clients.

Username/Password Protection

This schema will prompt web users to enter a CASE SENSITIVE username/password pair before serving any content within the directory containing the .htaccess file. In the simplest of cases there are two files involved, the .htaccess file, and the password file.
The password file is a text file containing a username and an encrypted password, separated by a colon. You can use one password file for many .htaccess files. The entries can be generated here.

Password Generation

a) Benutzung des Kommandos: "htpasswd"
To create and maintain the password file it is possible to use the Linux command htpasswd. You have to make sure that you are using the same path and filename like in your .htaccess File (AuthUserFile).
Beispiel:

Remark: option -c creates a new file

b) Password generation "von Hand"
Windows users can use several websites to generate passwords. You have the add this password later to the .htpasswd file:

Beispiel:

Creating .htaccess file
Die

.htaccess
wird in das Verzeichniss gelegt, welches einen Passwortschutz benötigt, und sieht dann soähnlich aus wie::

border="0" width="79%">

AuthUserFile /usr/home/lee/htpasswd

- FULL path to the password file. This file doesn't have to be in your public_html.
AuthName "Lee's Secret Area" - This description will appear in the login screen. Multiple words require quotes.
AuthType Basic - Just a line that is required.
<Limit GET POST> - Start of the limit tag. This will set limits on GET's and POST's.
require valid-user - Sets area restrictions such that the user must have a valid login.
</Limit> - End of the limit tag.

If you are using one password file for multiple .htaccess files, and would like certain users to have access to some areas, but not others, you may want to try one of the following:


a) specify the users by using require user userid:

<Limit GET POST>
require user cisco
require user bob
require user tim
</Limit>

b) setup a group file. This requires you to specify AuthGroupFile. You can now require group whatever
.htaccess example
:

AuthUserFile /usr/home/lee/htpasswd
AuthGroupFile /usr/home/lee/htgroup
AuthName "Lee's Secret Area"
AuthType Basic
<Limit GET POST>
require group managers
</Limit>

AuthGroupFile example:
managers: cisco bob tim jeff kari
systems: lee joe cisco
sales: kari tonja

Restricting by IP Address
This only requires the .htaccess file. There are two approaches to restricting by IP address:

a) deny everyone access, then allow certain hosts/IP addresses

AuthName "Lee's Secret Area"
AuthType Basic
<Limit GET POST>
order deny,allow
deny from all
allow from 199.166.210.
allow from .golden.net
allow from proxy.aol.com
allow from fish.wiretap.net
</Limit>

b) allow everyone except for certain hosts/IP addresses

AuthName "Lee's Secret Area"
AuthType Basic
<Limit GET POST>
order allow,deny
allow from all
deny from .microsoft.com
deny from .evil-hackers.org
deny from 24.112.106.235
deny from morphine.wiretap.net
</Limit>

More Examples
Try crunching the above together into one:

a) only managers can view this page from a .golden.net IP address:
htaccess:

AuthUserFile /usr/home/lee/htpasswd
AuthGroupFile /usr/home/lee/htgroup
AuthName "Lee's Secret Area"
AuthType Basic
<Limit GET POST>
order deny,allow
deny from all
allow from .golden.net
require group managers
</Limit>

AuthGroupFile:
managers: cisco bob tim jeff kari
systems: lee joe cisco
sales: kari tonja

b) managers can view this page from anywhere, everyone else must be from a golden.net IP address:
htaccess:

AuthUserFile /usr/home/lee/htpasswd
AuthGroupFile /usr/home/lee/htgroup
AuthName "Lee's Secret Area"
AuthType Basic
Satisfy Any Default is Satisfy ALL
<Limit GET POST>
order deny,allow
deny from all
allow from .golden.net
require group managers
</Limit>

AuthGroupFile:
managers: cisco bob tim jeff kari
systems: lee joe cisco
sales: kari tonja


Using WGET

Wget is a tasty utility on Linux and Mac OS X systems that can come in handy for web system administrators. Wget (GNU.org) is a command line application for file retrieval over ftp, http and https connections.

I find it useful for downloading files directly to a server I am working on in a shell session, saving time instead of downloading to my local desktop and uploading. Additionally, since it can pass user names and passwords, it is powerful for use in web site migrations, setting up mirrored sites and more.

Finally, Wget can be scheduled using cron, so if a file or directories need replicated on a regular basis, it can be set to do so without adminstrator intervention.

Some useful examples for utilizing Wget:

So if I am moving mydomain.com — I would use:

 wget -o mylogfile -r myuser:mypass@ftp://mydomain.com/ 

If you have an ftp user that can see more than one domain, insure you specify the path to the files and directories for the domain you are moving.

There are several other interesting and useful options including:

There are several other powerful features in Wget, and fortunately, the manual included offers excellent examples. Simply run man wget on the command line to review.