UNIX-Tools

Dieser Text befindet sich in der neusten Version auf http://www.eggdrop.ch/texts/unixtools/.

19.02.06: Version 1.0.1
20.05.04: Version 1.0

Einleitung

In diesem Text zeige ich dir einige nützliche UNIX-Tools, welche dir den Umgang mit UNIX erleichtern. Voraussetzungen sind ein lauffähiges UNIX-Betriebssystem (oder Linux) und grundlegende UNIX-Kenntnisse.

Hier ist eine Übersicht der Programme, die ich beschreiben werde. Die meisten sollten in deiner Distribution dabei sein, wenn nicht, frag Google.

wget

Mit wget lassen sich einfach Dateien und sogar komplette Internetseiten herunterladen. Der folgende Aufruf ladet eine Datei runter:

wget http://www.server.com/grossedatei.tar.gz

Wir können das Downloaden der Datei an einem beliebigen Zeitpunkt unterbrechen (z.B. mit CTRL+C) und dann mit dem -c-Switch an derselben Stelle wieder fortfahren. Wollen wir aus irgend einem Grunde die maximale Downlloadgeschwindigkeit runtersetzen, können wir dies mit --limit-rate tun. Folgender Aufruf setzt das herunterladen einer Datei mit 20 KByte/s fort:

wget -c --limit-rate=20k http://www.server.com/bigfile.tar.gz

Auch FTP wird von wget beherrscht. Ich lade meistens mit --passive-ftp herunter, weil aktives FTP von der Firewall geblockt wird:

wget --passive-ftp ftp://user:password@www.server.com/anotherfile.tar.gz

Wollen wir eine Seite mit allen Bildern herunterladen, benutzen wir --page-requisites oder kurz -p. Soll wget den Links folgen, teilen wir das mit -r mit und können mit --level n die Tiefe angeben. Ein nützlicher Switch ist noch --no-parent bzw. -np, welcher bewirkt, dass wget nicht in übergeordnete Verzeichnisse geht. Folgender Aufruf saugt die Seite http://server.com/dir/ mit allen Unterdateien (aber nicht übergeordneten, also z.B. http://server.com/anotherdir/) 3 Ebenen tief inkl. aller Bilder:

wget -r --level 3 -np --page-requisites http://server.com/dir/

Eine weitere nützliche Option ist --user-agent, mit der man sich z.B. als Mozilla ausgeben kann, weil viele Seiten wget blockieren.

bc

Mit bc kann man schnell Berechnungen machen. Der Rechner wird mit bc in der Konsole aufgerufen und man kann dann einfach die Rechnung eingeben:

1+1
2
8*5
40

Mit scale=n können wir die Genauigkeit der Ausgabe angeben:

10/3
3
scale=2
10/3
3.33
scale=50 
10/3
3.33333333333333333333333333333333333333333333333333

Wir können ganz einfach Zahlen in andere Zahlensysteme umrechnen, z.B.:

obase=16
65536
10000
obase=10
ibase=16
10000
65536

screen

screen ist meiner Meinung nach eines der nützlichsten Tools. Es erstellt ein virtuelles Terminal, welches auch nach dem ausloggen weiterläuft, man kann aber noch viel mehr damit machen.

Einen neuen Screen erstellt man mit:

screen -R name

wobei der name freiwillig ist. Nun können wir beliebige Befehle eingeben und dann mit CTRL+a d detachen und befinden uns wieder im ursprünglichen Terminal. Wollen wir wieder zurück in den screen, geben wir den obigen screen-Befehl nochmals ein. Wir können uns auch von mehreren Terminals (z.B. auch über ssh) gleichzeitig auf einen screen verbinden, und zwar mit dem Aufruf:

screen -x name

Sind wir im screen drinn, kann man mit CTRL+a c weitere Fenster erstellen. Mit CTRL+a " bekommt man ein Menü aller Fenster, und mit CTRL+a Space bzw. CTRL+a Backspace kann man zwischen den Fenstern wechseln.

Eine interessante Fähigkeit von screen ist auch, mehrere Fenster untereinander zu haben. Mit CTRL+a S splitten wir das aktuelle Fenster, wechseln ins neue Fenster mit CTRL+a Tabulator und können dort das neue Fenster mit z.B. CTRL+a " auswählen. Um nur noch das aktive Fenster zu sehen, drücken wir CTRL+a Q.

screen beherrscht auch Copy&Paste. Mit CTRL+a Escape oder CTRL+a [ wechseln wir in den Markierungs- und zugleich Scrollmodus. Mit den Pfeiltasten wählen wir den ersten Punkt der Markierung aus, drücken dann Space und wählen den letzten Punkt der Markierung aus und drücken schliesslich nochmal Space, damit der Text kopiert wird. Einfügen können wir mit CTRL+a ].

ssh

Fast jeder kennt ssh. Mit ssh kann man zu entfernten Rechnern Verbindungen aufbauen:

ssh user@host

Weniger bekannt ist, dass man mit ssh auch verschlüsselte Tunnels erstellen kann. Als einfaches Beispiel nehme ich eine komplett unverschlüsselte Telnet Verbindung zu einem netcat-Server. Rufen wir auf dem Server netcat auf mit:

nc -lp 2000

bzw. bei einigen Versionen:

nc -l 2000

Nebenbei starte ich noch den Sniffer ngrep, welcher mir alle Daten schön anzeigt und verbinde mich vom Server auf den Client mit:

telnet client 2000

Alle Daten, die ich schicke, zeigt der Sniffer unverschlüsselt an, z.B.:

T 192.168.0.1:33509 -> 192.168.0.2:2000 [AP]
  das ist ein test.

Nun machen wir einen SSH-Tunnel draus! Disconnecten wir uns mit dem Client und starten auf dem Server netcat neu. Nun stellen wir auf dem Client den Tunnel her, und zwar mit:

ssh -L 3000:localhost:2000 user@server

Nun verbinden wir den Client folgendermassen mit dem Server:

telnet localhost 3000

Wir können jetzt problemlos Daten austauschen, die Verbindung ist verschlüsselt, wie ngrep mitteilt:

T 192.168.0.1:33522 -> 192.168.0.2:22 [AP]
  .0R.j.C..x7.......r.B.h...[..Q.G{.._...f,C<.7C9H                           

Die Tunnels können auch umgekehrt hergestellt werden. Als Beispiel wollen wir eine SSH-Verbindung rückwärts aufbauen. Das ist besonders nützlich, wenn man zu einem hinter einem NAT-Router stehenden Computer eine SSH-Verbindung aufbauen möchte.

Nehmen wir an, wir sind Computer A und wollen zu Computer B, der hinter einem NAT-Router steht, eine Verbindung aufbauen. Auf Computer A muss dabei trotzdem ein SSH-Server laufen. Auf Computer B müssen wir nun folgenden Befehl eingeben, um den Tunnel herzustellen:

ssh -R 2000:localhost:22 user@A

Es sieht aus wie eine ganz normale Verbindung von Host B zu Host A. Nun stellen wir die eigentliche Verbindung zu Host B von Host A her:

ssh -p 2000 user@localhost

Diese Verbindung zu localhost stellt in Wirklichkeit eine Verbindung zu Host B her. Nun sind wir also auf Host B und können beliebige Befehle ausführen.


Zurück zu www.eggdrop.ch

Letzte Änderung: 19.02.06

Copyright (C) 2004-2006 by Thomas "tom" Steinacher <tom at eggdrop.ch>
Valid HTML 4.0!

Dieser Text gehört zu www.eggdrop.ch und ist urheberrechtlich geschützt. Das Weitergeben und Kopieren dieses Textes ist erwünscht unter folgenden Bedingungen: 1. Der Text muss so sein wie er ist und darf in keiner Weise verändert oder in die eigene Homepage integriert werden. 2. Es muss ein deutlicher Hinweis auf die Herkunft (www.eggdrop.ch) vorhanden sein. 3. Der Text sollte wenigstens alle 3 Monate auf Updates überprüft werden (siehe die Versionsnummer ganz am Anfang des Textes!)