Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
Shell-Programmierung von Jürgen Wolf
Einführung, Praxis, Referenz
Buch: Shell-Programmierung

Shell-Programmierung
782 S., mit CD, 44,90 Euro
Rheinwerk Computing
ISBN 3-89842-683-1
gp Kapitel 14 Linux-UNIX-Kommandoreferenz
  gp 14.1 Kurzübersicht
  gp 14.2 Dateiorientierte Kommandos
  gp 14.3 Verzeichnisorientierte Kommandos
  gp 14.4 Verwaltung von Benutzern und Gruppe
  gp 14.5 Programm- und Prozessverwaltung
  gp 14.6 Speicherplatzinformationen
  gp 14.7 Dateisystem-Kommandos
  gp 14.8 Archivierung und Backup
  gp 14.9 Systeminformationen
  gp 14.10 System-Kommandos
  gp 14.11 Druckeradministration
  gp 14.12 Netzwerkbefehle
  gp 14.13 Benutzerkommunikation
  gp 14.14 Bildschirm- und Terminalkommandos
  gp 14.15 Online-Hilfen
  gp 14.16 Alles rund um PostScript-Kommandos
  gp 14.17 Gemischte Kommandos


Rheinwerk Computing

14.12 Netzwerkbefehldowntop

Netzwerkbefehle erfordern ein tieferes Verständnis. Wenn Sie als Administrator mit Begriffen wie IP-Adresse, MAC-Adresse, DNS, FTP, SSH usw. nichts anfangen können, wäre eine fortführende Lektüre mehr als vonnöten. Leider kann ich aufgrund des eingeschränkten Umfangs nicht auf die Fachbegriffe der Netzwerktechnik eingehen. Nebenbei erwähnt, sind diese Themen zum Teil schon ein ganzes Buch wert, weshalb die Beschreibung hier wohl für die meisten eher enttäuschend ausfallen dürfte.


Rheinwerk Computing

arp – Ausgeben von MAC-Adressen  downtop

Wenn Sie die Tabelle mit den MAC-Adressen der kontaktierten Rechner benötigen, können Sie das Kommandos arp verwenden. Ein Beispiel:

you@host > arp -a
...
juergen.penguin (192.168.0.xxx) at 00:30:84:7a:9e:0e on rl0 
permanent [ethernet]
...

Die MAC-Adresse ist hierbei die sechsstellige Hexadezimalzahl »00:30:84:7a:9e:0e«. Benötigen Sie hingegen die MAC-Nummer Ihrer eigenen Netzwerkkarte, so können Sie diese mit ifconfig ermitteln:

# ifconfig -a
eth0      Protokoll:Ethernet  Hardware Adresse 00:00:39:2D:01:A1
...

In der Zeile »eth0« (unter Linux) finden Sie hierbei die entsprechende MAC-Adresse unter »Hardware Adresse«. Hier sind wieder systemspezifische Kenntnisse von Vorteil.


Rheinwerk Computing

ftp – Dateien zu einem anderen Rechner übertragen  downtop

Mit Hilfe von ftp (File Transfer Protocol) können Sie Dateien innerhalb eines Netzwerks (bspw. Internet) zwischen verschiedenen Rechnern transportieren. Da ftp über eine Menge Features und Funktionen verfügt, soll hier nur auf den Hausgebrauch eingegangen werden, und zwar wie man Daten von einem entfernten Rechner abholt und hinbringt.

Zunächst müssen Sie sich auf dem Server einloggen. Dies geschieht üblicherweise mit

ftp Server_Name

In meinem Beispiel lautet der Servername (und auch mein Webhoster) myhoster.de:

you@host > ftp myhoster.de
Connected to myhoster.de (194.150.178.34).
220 194.150.178.34 FTP server ready
Name (myhoster.de:you): us10129
331 Password required for us10129.
Password:********
230 User us10129 logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Nachdem ftp eine Verbindung mit dem Server aufgenommen hat, werden Sie aufgefordert, Ihren Benutzernamen (hier »us10129«) und anschließend das Passwort einzugeben. Wenn alles korrekt war, befindet sich vor dem Prompt ftp> und wartet auf weitere Anweisungen. Jetzt können Sie im Eingabeprompt Folgendes machen:

gp  Gewünschtes Verzeichnis durchsuchen: cd, dir, lcd (lokales Verzeichnis)
gp  FTP-Parameter einstellen: type binary, hash, prompt
gp  Datei(en) abholen: get, mget
gp  Datei(en) hinbringen: put, mput
gp  Abmelden: bye oder exit

Natürlich bietet ftp weitaus mehr Befehle als diese an, aber alles andere würde hier über den Rahmen des Buchs hinausgehen.

Zunächst werden Sie sich wohl das Inhaltverzeichnis ansehen wollen. Hierzu können Sie den Befehl dir (welcher auf *nix Systemen meistens dem Aufruf von ls –l entspricht) zum Auflisten verwenden:

ftp> dir
200 PORT command successful
150 Opening ASCII mode data connection for file list
drwxrwx--x   9       4096 Apr  8 20:31 .
drwxrwx--x   9       4096 Apr  8 20:31 ..
-rw-------   1      26680 Apr 26 09:00 .bash_history
...
lrwxrwxrwx   1     18 Aug 10  2004 logs -> /home/logs/us10129
drwxrwxr-x   2   4096 Mar 28 16:03 mysqldump
drwxr-xr-x  20   4096 Apr  3 08:13 www.pronix.de
226 Transfer complete.

Wollen Sie nun in ein Verzeichnis wechseln, können Sie auch hier das schon bekannte Kommando cd verwenden. Ebenso sieht es aus, wenn Sie das aktuelle Arbeitsverzeichnis wissen wollen, in dem Sie sich gerade befinden. Hier leistet das bekannte pwd seine Dienste.

Das aktuelle Verzeichnis auf dem lokalen Rechner können Sie mit dem Kommando lcd wechseln. Sie können übrigens auch die Befehle auf Ihrem lokalen Rechner verwenden, wenn Sie ein !-Zeichen davor setzen. Hierzu ein Beispiel, welches die Befehle nochmals demonstriert.

ftp> pwd
257 "/" is current directory.
ftp> cd backups/Shellbuch
250 CWD command successful
ftp> pwd
257 "/backups/Shellbuch" is current directory.
ftp> dir
200 PORT command successful
150 Opening ASCII mode data connection for file list
drwxrwxr-x   2 us10129  us10129      4096 Apr 26 09:07 .
drwx------   3 us10129  us10129      4096 Jan 15 14:15 ..
...
-rw-r--r--   1 us10129  us10129    126445 Mar 13 11:40 kap005.txt
-rw-------   1 us10129  us10129      3231 Apr 20 05:26 whoami.txt
226 Transfer complete.
ftp>

Hier befinde ich mich auf dem Rechner myhoster.de in meinem Heimverzeichnis in ~/backups/Shellbuch. Ich möchte mir jetzt die Datei whoami.txt auf meinen lokalen Rechner kopieren. Ich hole sie mit dem Kommando get. Zuvor will ich aber noch auf meinem lokalen Rechner in ein Verzeichnis namens mydir wechseln.

ftp> lcd mydir
Local directory now /home/you/mydir
ftp> !pwd
/home/you/mydir
ftp> !ls
file1.txt  file2.txt  file3.txt  files.zip  hallo.c
ftp> get whoami.txt
local: whoami.txt remote: whoami.txt
200 PORT command successful
150 Opening BINARY mode data connection whoami.txt (3231 bytes)
226 Transfer complete.
3231 bytes received in 0.0608 secs (52 Kbytes/sec)
ftp> !ls
file1.txt  file2.txt  file3.txt  files.zip  hallo.c  whoami.txt
ftp>

Und schon habe ich die Datei whoami.txt auf meinem lokalen Rechner ins Verzeichnis mydir kopiert. Wollen Sie mehrere Dateien oder gar ganze Verzeichnisse holen, müssen Sie mget verwenden. Hierbei stehen Ihnen auch die Wildcard-Zeichen * und ? zur Verfügung. Da mget Sie nicht jedes Mal bei mehreren Dateien fragt, ob Sie diese wirklich holen wollen, können Sie den interaktiven Modus mit prompt abstellen.

Haben Sie jetzt die Datei whoami.txt bearbeitet und wollen diese wieder hochladen, verwenden Sie put (oder bei mehreren Dateien mput).

ftp> put whoami.txt
local: whoami.txt remote: whoami.txt
200 PORT command successful
150 Opening BINARY mode data connection for whoami.txt
226 Transfer complete.
3231 bytes sent in 0.000106 secs (3e+04 Kbytes/sec)
ftp>

Sie sehen außerdem, dass hierbei die Datenübertragung binär (BINARY) stattgefunden hat. Wollen Sie hier auf ASCII umstellen, müssen Sie nur type verwenden:

ftp> type ascii
200 Type set to A
ftp> put whoami.txt
local: whoami.txt remote: whoami.txt
200 PORT command successful
150 Opening ASCII mode data connection for whoami.txt
226 Transfer complete.
3238 bytes sent in 0.000487 secs (6.5e+03 Kbytes/sec)
ftp>

Zurücksetzen können Sie das wieder mit type binary. Und wie schon erwähnt, beim Übertragen mehrerer Dateien mit mget und mput werden Sie immer gefragt, ob Sie die Datei transferieren wollen. Diese Abfrage können Sie mit prompt abstellen. Je nachdem, ob Sie eine Fortschrittsanzeige wünschen, können Sie dies mit einem Aufruf von hash ab- oder anschalten. Gerade bei umfangreicheren Dateien ist dies sinnvoll. Dabei wird während der Übertragung alle 1024 Zeichen ein »#« ausgegeben.

Den Script-Betrieb können Sie verwenden, wenn sich eine Datei namens .netrc im Heimverzeichnis des FTP-Servers befindet. Dabei können Sie sich z. B. beim Einloggen die Abfrage von Usernamen und Passwort ersparen. Natürlich kann man solch eine Datei auch im heimischen Heimverzeichnis anlegen. Allerdings darf diese Datei nur vom Eigentümer gelesen werden, also »chmod 0600« für ~/.netrc.

So sieht zum Beispiel der Vorgang, die Datei whoami.txt wie eben demonstriert vom Server zu holen, mit .netrc folgendermaßen aus:

machine myhoster.de
login us10129
password asdf1234
macdef init
cd $HOME/backups/Shellbuch
get whoami.txt
bye

Rufen Sie jetzt noch ftp wie folgt auf:

you@host > ftp myhoster.de
Connected to myhoster.de (194.150.178.34).
220 194.150.178.34 FTP server ready
331 Password required for us10129.
230 User us10129 logged in.
cd $HOME/backups/Shellbuch
550 $HOME/backups/Shellbuch: No such file or directory
get whoami.txt
local: whoami.txt remote: whoami.txt
200 PORT command successful
550 whoami.txt: No such file or directory
Remote system type is UNIX.
Using binary mode to transfer files.
bye
221 Goodbye.

Und alles geschieht vollautomatisch. Ebenso sieht dies mit dem Hochladen von whoami.txt aus. Wenn die Datei editiert wurde, können Sie diese wieder wie folgt im Script-Modus hochladen. Hier die Datei .netrc:

machine myhoster.de
login us10129
password asdf1234
macdef init
lcd mydir
cd $HOME/backups/Shellbuch
put whoami.txt
bye

Jetzt nur noch ftp aufrufen:

you@host > ftp myhoster.de
Connected to myhoster.de (194.150.178.34).
220 194.150.178.34 FTP server ready
331 Password required for us10129.
230 User us10129 logged in.
lcd mydir
Local directory now /home/tot/mydir
cd $HOME/backups/Shellbuch
550 $HOME/backups/Shellbuch: No such file or directory
put whoami.txt
local: whoami.txt remote: whoami.txt
200 PORT command successful
150 Opening ASCII mode data connection for whoami.txt
226 Transfer complete.
3238 bytes sent in 0.000557 secs (5.7e+03 Kbytes/sec)
bye
221 Goodbye.

Noch mehr Hinweise für den Script-Modus und die Datei netrc entnehmen Sie bitte aus man-Seite von netrc (man netrc).


Hinweis   Bitte bedenken Sie, dass ftp nicht ganz sicher ist, da Sie bei der Authentifizierung das Passwort unverschlüsselt übertragen.



Rheinwerk Computing

hostname – Rechnername ermitteln  downtop

Das Kommando hostname können Sie verwenden, um den Namen des lokalen Rechners anzuzeigen bzw. zu setzen oder zu verändern. So ein Name hat eigentlich erst im Netzwerkbetrieb seine echte Bedeutung. Im Netz besteht ein vollständiger Rechnername (Fully Qualified Domain Name) aus einem Eigennamen und einem Domainnamen. Der (DNS-)Domainname bezeichnet das lokale Netz, an dem der Rechner hängt.

you@host > hostname
goliath.myhoster.de
you@host > hostname -s
goliath
you@host > hostname -d
myhoster.de

Ohne Angabe einer Option wird der vollständige Rechnername ausgegeben. Mit der Option –s geben Sie nur den Eigennamen des Rechners aus und mit –d nur den (DNS-)Domainnamen des lokalen Netzes.


Rheinwerk Computing

ifconfig – Netzwerkzugang konfigurieren  downtop

Mit dem Kommando ifconfig kann man die Einstellungen einer Netzwerk-Schnittstelle abfragen oder setzen. Alle Einstellungen können Sie sich mit der Option –a anzeigen lassen. Die Syntax zu ifconfig:

ifconfig schnittstelle [addresse [parameter]]

Dabei geben Sie den Namen der zu konfigurierenden Schnittstelle an. Befindet sich bspw. auf Ihrem Rechner eine Netzwerkkarte, so lautet unter Linux die Schnittstelle hierzu »eth0«, die zweite Netzwerkkarte im Rechner (sofern eine vorhanden ist) wird mit »eth1« angesprochen. Auf anderen Systemen lautet der Name der Schnittstelle zur Netzwerkkarte wiederum anders. Daher sollte man ja auch ifconfig mit der Option –a aufrufen, um mehr in Erfahrung darüber zu bringen. Die »adresse« ist die IP-Adresse, die der Schnittstelle zugewiesen werden soll. Hierbei kann man die Dezimalnotation (xxx.xxx.xxx.xxx) verwenden oder einen Namen, den ifconfig in /etc/host nachschlägt.

Verwenden Sie ifconfig ohne die Option –a, um sich einen Überblick zu verschaffen, dann werden die inaktiven Schnittstellen nicht mit angezeigt.

Der Aufruf für die Schnittstelle zu Ethernetkarte »eth0« sieht beispielsweise wie folgt aus (Debian Sarge):

# ifconfig
eth0
   Link encap:Ethernet  HWaddr 00:02:2A:D4:2C:EB
   inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
   UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
   RX packets:80 errors:0 dropped:0 overruns:0 frame:0
   TX packets:59 errors:0 dropped:0 overruns:0 carrier:0
   collisions:0 txqueuelen:100
   RX bytes:8656 (8.4 KiB)  TX bytes:8409 (8.2 KiB)
   Interrupt:11 Base address:0xa000
lo
   Link encap:Local Loopback
   inet addr:127.0.0.1  Mask:255.0.0.0
   UP LOOPBACK RUNNING  MTU:16436  Metric:1
   RX packets:8 errors:0 dropped:0 overruns:0 frame:0
   TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
   collisions:0 txqueuelen:0
   RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)

Wenn IPv6 konfiguriert ist, kommt noch die IPv6-Adresse dazu.

Aus der Ausgabe kann man entnehmen, dass auf dieser Netzwerkkarte 59 Pakete gesendet (TX) und 80 empfangen (RX) wurden. Die maximale Größe einzelner Pakete beträgt 1500 bytes (MTU). Die MAC-Adresse (Hardware-Adresse), welche unsere Netzwerkkarte eindeutig identifiziert (außer diese wird manipuliert) lautet »00:02:2A:D4:2C:EB«.

Wollen Sie eine Schnittstelle ein- bzw. ausschalten, können Sie dies mit den zusätzlichen Parametern up (für Einschalten) und down (für Abschalten) vornehmen. Als Beispiel wieder die Netzwerkkarte mit dem Namen »eth0« als Schnittstelle:

ifconfig eth0 down

Hier haben Sie die Netzwerkkarte »eth0« abgeschaltet. Einschalten können Sie diese folgendermaßen:

ifconfig eth0 up

Eine IP-Adresse stellen Sie ein oder verändern Sie ebenfalls mit ifconfig:

ifconfig eth0 192.18.19.91

Wollen Sie bei der Schnittstelle die Netzmaske und Broadcast verändern, so ist dies mit ifconfig wenig Arbeit (unterlassen Sie es, wenn Sie nicht genau wissen, was die Netzmaske und Broadcast ist):

ifconfig eth0 10.25.38.41 netmask \
  255.255.255.0 broadcast 10.25.38.255

Damit weisen Sie der Netzwerkkarte die IP-Adresse 10.25.38.41 aus dem Netz 10.25.38.xxx zu. Mit »netmask« geben Sie an, wie groß das Netz ist (hier ein Netzwerk der Klasse C).


Rheinwerk Computing

mail/mailx – E-Mails schreiben und empfangen (und auswerten)  downtop

Mit dem Kommando mail können Sie aus einem Shellscript heraus E-Mails versenden. Mithilfe der Option –s können Sie eine einfache Textmail mit Betreff (–s = Subject) an eine Adresse schicken, beispielsweise:

you@host > echo "Hallo" | mail -s "Betreff" pronix@t-online.de

Da nicht alle mail-Kommandos die Option –s für einen Betreff haben, können Sie gegebenenfalls auch auf mailx oder Mail (mit großen »M« ) zurückgreifen, die auf einigen Systemen vorhanden sind. Mit cat können Sie natürlich auch den Inhalt einer ganzen Datei an die Mailadresse senden:

you@host > cat whoami.txt | mail -s "Ein Textdatei" \
> pronix@t-online.de

Dabei kann man allerlei Ausgaben eines Kommandos per mail an eine Adresse versenden:

you@host > ps -ef | mail -s "Prozesse 12Uhr" pronix@t-online.de

Sinnvoll kann dies z. B. sein, wenn auf einem System ein bestimmtes Limit überschritten wurde. Dann können Sie sich (oder einem anderen Benutzer) eine Nachricht zukommen lassen. Ebenso kann überprüft werden, ob ein Server dauerhaft verfügbar ist. Testen Sie etwa stündlich (bspw. mit cron) mittels nmap (hier kann man nicht nur nachsehen, ob die Netzwerkkarte das UDP-Paket zurückschickt, sondern kann direkt nachschauen, ob der Port des betreffenden Dienstes noch offen ist), ob der Server erreichbar ist, und ist er es einmal nicht, können Sie sich hierbei eine Nachricht zukommen lassen.

Zusätzliche Optionen, die Sie mit mail bzw. mailx verwenden können, sind:


Tabelle 14.27   Optionen für das Kommando mail/mailx

Option Bedeutung
–s Betreff Hier können Sie den Betreff (Subject) der E-Mail angeben.
–c adresse Diese Adresse bekommt eine Kopie der Mail.
–b adresse Diese Adresse bekommt eine blind carbon copy der Mail.


Rheinwerk Computing

uuencode/uudecode – Text- bzw. Binärdateien codieren  downtop

Mit den Kommandos uuencode/uudecode können Sie Textdateien in Binärdateien und wieder zurück umwandeln. Solche Umwandlungen werden zum Beispiel beim Datenaustausch über das Internet notwendig, weil sonst hierbei die Sonderzeichen (bspw. Umlaute bzw. alle ASCII-Zeichen über 127) auf manchen Rechnern nicht richtig dargestellt werden können. Was bei einer Textdatei nicht so wild ist, weil eben nicht darstellbare Zeichen »verhunzt« werden. Doch bei einer binären Datei bedeutet dies, dass diese schlicht nicht mehr funktioniert. Die meisten modernen E-Mail-Programme unterstützen MIME und erkennen solche codierten Dateien als Anhang automatisch, daher erfolgt hierbei die Umwandlung von selbst, ohne dass Sie als Benutzer etwas davon mitbekommen.

uuencode macht im Prinzip nichts anderes, als dass es jeweils drei 8-Bit-Zeichen zu vier 6-Bit-Zeichen umwandelt und für jedes Zeichen 32 addiert. Damit werden alle Zeichen in einen Satz von Standardzeichen umgewandelt, die relativ verlässlich übertragen werden.

Gewöhnlich werden Sie wohl uuencode verwenden, um Anhänge zu Ihren E-Mails mit dem Programm mail, Mail oder mailx hinzuzufügen. Wollen Sie einfach eine Datei namens archiv.tgz per Anhang mit mail versenden, gehen Sie wie folgt vor:

you@host > uuencode archiv.tgz archiv.tgz | \
> mail -s 'Anhang: archiv.tgz' user@host

Das hierbei zweimal archiv.tgz verwendet wurde, ist übrigens kein Fehler, sondern wird von uuencode erwartet.


Rheinwerk Computing

netstat – Statusinformationen über das Netzwerk  downtop

Für die Anwendung von netstat gibt es viele Möglichkeiten. Mit einem einfachen Aufruf von netstat zeigen Sie den Zustand einer bestehenden Netzwerkverbindung an. Neben der Überprüfung von Netzwerkverbindungen können Sie mit netstat Routentabellen, Statistiken zu Schnittstellen, maskierte Verbindungen und noch vieles mehr anzeigen lassen. In der Praxis lässt sich somit ohne Problem die IP oder der Port eines ICQ-Users (Opfer) ermitteln oder ob ein Rechner mit einen Trojaner infiziert ist. Hier einige Beispiele:

you@host > netstat -nr

Hiermit lassen Sie die Routingtabelle (–r) des Kernels ausgeben.

you@host > netstat -i

Mit der Option –i erhalten Sie die Schnittstellenstatistik.

you@host > netstat -ta

Mit –ta erhalten Sie die Anzeige aller Verbindungen. Die Option –t steht dabei für TCP. Mit –u, –w bzw. –x zeigen Sie die UDP-, RAW bzw. UNIX-Sockets an. Mit –a werden dabei auch die Sockets angezeigt, die noch auf eine Verbindung warten.


Rheinwerk Computing

nslookup (host/dig) – DNS-Server abfragen  downtop

Mit nslookup können Sie aus dem Domainnamen eine IP-Adresse bzw. die IP-Adresse zu einem Domainnamen ermitteln. Zur Auflösung des Namens wird gewöhnlich der DNS-Server verwendet.


Hinweis   Bei der Verwendung von nslookup werden Sie lesen, dass nslookup künftig von den Kommandos host oder dig abgelöst wird.


Hier nslookup und host bei der Ausführung:

you@host > nslookup pronix.de
Server:         217.237.150.141
Address:        217.237.150.141#53
Non-authoritative answer:
Name:   pronix.de
Address: 194.150.178.34
you@host > host pronix.de
pronix.de has address 194.150.178.34
you@host > host 194.150.178.34
34.178.150.194.in-addr.arpa domain name pointer goliath.myhoster.de.

Rheinwerk Computing

ping – Verbindung zu anderem Rechner testen  downtop

Wollen Sie die Netzwerkverbindung zu einem anderen Rechner testen oder einfach nur den lokalen TCP/IP-Stack überprüfen, können Sie das Kommando ping (Paket Internet Groper) verwenden.

ping host

ping überprüft dabei, ob »host« (IP-Adresse oder Domainname) antwortet. ping bietet noch eine Menge Optionen an, die noch mehr Infos liefern, die allerdings hier nicht genauer erläutert werden. Zur Überprüfung sendet ping ein ICMP-Paket vom Type ICMP Echo Request an die Netzwerkstation. Hat die Netzwerkstation das Paket empfangen, sendet es ebenfalls ein ICMP-Paket, allerdings vom Typ ICMP Echo Reply zurück.

you@host > ping -c5 www.pronix.de
PING www.pronix.de (194.150.178.34) 56(84) bytes of data.
64 bytes from goliath.myhoster.de (194.150.178.34): icmp_seq=1 ttl=56 time=79.0 ms
64 bytes from goliath.myhoster.de (194.150.178.34): icmp_seq=2 ttl=56 time=76.8 ms
64 bytes from goliath.myhoster.de (194.150.178.34): icmp_seq=3 ttl=56 time=78.2 ms
64 bytes from goliath.myhoster.de (194.150.178.34): icmp_seq=4 ttl=56 time=76.8 ms
64 bytes from goliath.myhoster.de (194.150.178.34): icmp_seq=5 ttl=56 time=79.2 ms
--- www.pronix.de ping statistics ---
5 packets transmitted, 5 received, 0  % packet loss, time 4001ms
rtt min/avg/max/mdev = 76.855/78.058/79.228/1.061 ms

Hier wurden z. B. 5 Pakete (mit der Option –c kann die Anzahl der Pakete angegeben werden) an www.pronix.de gesendet und wieder erfolgreich empfangen, wie aus der Zusammenfassung am Ende zu entnehmen ist. Rufen Sie ping hingegen ohne eine Option auf

ping www.pronix.de

so müssen Sie selbst für eine Beendigung des Datenaustausches zwischen den Rechnern sorgen. Ein einfaches (Strg)+(C) tut da seinen Dienst und man erhält ebenfalls wieder eine Zusammenfassung. Neben der Möglichkeit, auf die Verfügbarkeit eines Rechners und des lokalen TCP/IP-Stacks zu prüfen (ping localhost), können Sie außerdem auch die Laufzeit von Paketen vom Sender zum Empfänger ermitteln. Hierzu wird die Zeit halbiert, bis das »Reply« eintrifft.


Rheinwerk Computing

Die r-Kommandos von Berkeley (rcp, rlogin, rsh, rwho)  downtop

Aus Sicherheitsgründen sei empfohlen, diese Tools nicht mehr einzusetzen und stattdessen auf die mittlerweile sichereren Alternativen ssh und scp zu setzen. Es fängt schon damit an, dass hier das Passwort beim Einloggen im Klartext, ohne jede Verschlüsselung übertragen wird. Bedenken Sie, dass ein unverschlüsseltes Passwort, das zwischen zwei Rechnern im Internet übertragen wird, jederzeit (bspw. mit einem »Sniffer«) abgefangen und mitgelesen werden kann. Für Passwörter gilt im Allgemeinen, dass man diese niemals im Netz unverschlüsselt übertragen sollte. Da es mittlerweile zur Passwortübertragung mit Secure Shell (ssh), SecureRPC von SUN und Kerberos vom MIT sehr gute Lösungen gibt, haben die r-Kommandos eigentlich keine Berechtigung mehr.

Schlimmer noch, für die Befehle rsh und rcp war auf den Zielrechnern nicht einmal ein Passwort nötig. Eine Authentifizierung erfolgte hierbei über die Datei /etc/hosts.equiv und ~/.rhosts. Darin wurden einzelne Rechner eingetragen, die als vertrauenswürdig empfunden wurden und so die Passwort-Authentifizierung umgehen konnten.


Rheinwerk Computing

ssh – sichere Shell auf anderem Rechner starten  downtop

ssh (Sercure Shell) zählt mittlerweile zu einem der wichtigsten Dienste überhaupt. Mit diesem Dienst ist es möglich, eine verschlüsselte Verbindung zwischen zwei Rechnern aufzubauen. ssh wurde aus der Motivation heraus entwickelt, sichere Alternativen zu telnet und den r-Kommandos von Berkeley zu schaffen.

Wenn Sie zum ersten Mal eine Verbindung zu einem anderen Rechner herstellen, bekommen Sie gewöhnlich eine Warnung, in der ssh nachfragt, ob Sie dem anderen Rechner vertrauen wollen. Wenn Sie mit »yes« antworten, speichert ssh den Namen und den RSA-Fingerprint (ein Code zur eindeutigen Identifizierung des anderen Rechners) in der Datei ~/.ssh/know_hosts. Beim nächsten Starten von ssh erfolgt diese Abfrage dann nicht mehr.

Im nächsten Schritt erfolgt die Passwortabfrage, welche verschlüsselt übertragen wird. Bei korrekter Eingabe des Passworts beginnt die Sitzung am anderen Rechner (als würde man diesen Rechner vor sich haben). Die Syntax:

ssh -l loginname rechnername

In meinem Fall lautet der »loginname« bspw. »us10129« und der »rechnername« (mein Webhoster, auf dem sich pronix.de befindet) myhoster.de. Das Einloggen mit ssh verläuft hierbei wie folgt:

you@host > hostname
linux.home
you@host > ssh -l us10129 myhoster.de
us10129@myhoster.de's password:********
Last login:
Sat Apr 30 12:52:05 2005 from p549b6d72.dip.t-dialin.net
[us10129@goliath ~]$ hostname
goliath.myhoster.de
[us10129@goliath ~]$ exit
Connection to myhoster.de closed.
you@host >

Oder ein weiteres Beispiel – ein Login zu meinem Fachgutachter auf einer FreeBSD-Jail:

you@host > ssh -l juergen123 192.135.147.2
Password:********
Last login: Wed Apr 27 15:26:24 2005 from ftpmirror.speed
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
FreeBSD 4.11-RELEASE (SEMA) #5: Mon Jan 31 14:06:17 CET 2005
juergen@juergen$ hostname
juergen123.penguin
juergen123@juergen$

Noch ein paar Zeilen für die ganz Ängstlichen. Für jede Verbindung über ssh wird zwischen den Rechnern immer ein neuer Sitzungsschlüssel ausgehandelt. Will man einen solchen Schlüssel knacken, benötigt der Angreifer unglaublich viel Zeit. Sobald Sie sich ausloggen, müsste der Angreifer erneut versuchen, den Schlüssel zu knacken. Dies natürlich nur rein theoretisch, denn hierbei handelt es sich immerhin um Schlüssel wie RSA, BLOWFISH, IDEA und TRIPLEDES, zwischen denen man hier wählen kann. Alle diese Schlüssel gelten als sehr sicher.


Rheinwerk Computing

scp – Dateien kopieren zwischen unterschiedlichen Rechnern  downtop

Das Kommando scp ist Teil einer ssh-Installation, womit man Dateien sicher zwischen unterschiedlichen Rechnern kopieren kann. scp funktioniert genauso wie das lokale cp. Der einzige Unterschied ist natürlich die Angabe der Pfade auf den entfernten Rechnern. Dabei sieht die Verwendung des Rechnernamens wie folgt aus:

benutzer@rechner:/verzeichnis/zum/ziel

Um auf meinen Account zurückzukommen, mein Benutzername lautet »us10129« und der Rechner myhoster.de:

you@host > scp whoami.txt us10129@myhoster.de:~
us10129@myhoster.de's password:********
whoami.txt                         100  % 3231     3.2KB/s   00:00
you@host > scp us10129@myhoster.de:~/grafik/baum.gif $HOME
us10129@myhoster.de's password:********
baum.gif                           100  % 8583     8.4KB/s   00:00
you@host >

Zuerst wurde die Datei whoami.txt aus dem aktuellen lokalen Verzeichnis ins Heimverzeichnis von pronix.de kopiert (/home/us10129). Anschließend habe ich mir aus dem Verzeichnis /home/us10129/grafik die GIF-Datei baum.gif auf meinen lokalen Rechner kopiert. scp ist in der Tat eine interessante Lösung, um Dateien auf mehreren Rechnern mit einem Script zu kopieren.

Was allerdings bei der Scriptausführung stören dürfte (besonders wenn es automatisch geschehen sollte), ist die Passwortabfrage (hierbei würde der Prozess angehalten). Hierzu bietet es sich an, sich mithilfe eines asymmetrischen Verschlüsselungsverfahrens ein Login ohne Passwort zu verschaffen. Dazu stellt man am besten auf dem Clientrechner mit dem Programm ssh–keygen ein entsprechendes Schlüsselpaar (hier mit einem RSA-Schlüssel) bereit:

you@host > ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/you/.ssh/id_rsa):(ENTER)
Enter passphrase (empty for no passphrase):(ENTER)
Enter same passphrase again:(ENTER)
Your identification has been saved in /home/you/.ssh/id_rsa.
Your public key has been saved in /home/you/.ssh/id_rsa.pub.
The key fingerprint is:
bb:d9:6b:b6:61:0e:46:e2:6a:8d:75:f5:b3:41:99:f9 you@linux

Hier wurden zwei RSA-Schlüssel ohne Passphrase erstellt. Jetzt haben Sie zwei Schlüssel, eine privaten (id_rsa.) und einen öffentlichen (id_rsa.pub). Damit Sie jetzt alle ssh-Aktionen ohne Passwort durchführen können, müssen Sie den öffentlichen Schlüssel nur noch auf den Benutzeraccount des Servers hochladen.

you@host > scp .ssh/id_rsa.pub us10129@myhoster.de:~/.ssh/
us10129@myhoster.de's password:********
id_rsa.pub                         100  %  219     0.2KB/s   00:00
you@host >

Jetzt nochmals einloggen und die Datei id_rsa.pub an die Datei ~/.ssh/ authorized_keys hängen:

you@host > ssh us10129@myhoster.de
us10129@myhoster.de's password:********
Last login:
Sat Apr 30 13:25:22 2005 from p549b6d72.dip.t-dialin.net
[us10129@goliath ~]$ cd ~/.ssh
[us10129@goliath .ssh]$ ls
id_rsa.pub  known_hosts
[us10129@goliath .ssh]$ cat id_rsa.pub >> authorized_keys

Nach erneutem Einloggen über ssh oder dem Kopieren mit scp sollte die Passwortabfrage der Vergangenheit angehören.


Rheinwerk Computing

rsync – Replizieren von Dateien und Verzeichnissen  downtop

rsync wird verwendet, um Dateien bzw. ganze Verzeichnis(bäume) zu synchronisieren. Hierbei kann sowohl eine lokale als auch eine entfernte Synchronisation vorgenommen werden. Der Ausdruck »synchronisieren« ist eigentlich rein syntaktisch nicht richtig. Man kann zwar bei einem Verzeichnisbaum »X« Daten hinzufügen, dass dieser exakt denselben Inhalt erhält wie der Verzeichnisbaum »Y«. Dies funktioniert allerdings umgekehrt gleichzeitig nicht. Man spricht hierbei vom Replizieren. Wollen Sie echtes bidirektionales Synchronisieren realisieren (bspw. Daten zwischen zwei PCs), müssen Sie auf unision zurückgreifen.

Die Syntax zu rsync lautet:

rsync [optionen] ziel quelle

Einige Beispiele:

rsync -avzb -e ssh pronix.de:/ /home/you/backups/

Damit wird meine Webseite im Internet pronix.de mit dem lokalen Verzeichnis /home/you/backups synchronisiert. Mit a verwenden Sie den archive-Modus, mit b werden Backups erstellt und mit v (für verbose) wird rsync etwas gesprächiger. Durch die Option z werden die Daten komprimiert übertragen. Außerdem wird mit der Option –e und ssh eine verschlüsselte Datenübertragung verwendet.

Geben Sie bei der Quelle als letztes Zeichen einen Slash (/) an, wird dieses Verzeichnis nicht mitkopiert, sondern nur der darin enthaltene Inhalt, beispielsweise:

rsync -av /home/you/Shellbuch/ /home/you/backups

Hier wird der Inhalt von /home/you/Shellbuch nach /home/you/backups kopiert. Würden Sie hingegen Folgendes schreiben

rsync -av /home/you/Shellbuch /home/you/backups

so würde in /home/you/backups das Verzeichnis Shellbuch angelegt (/home/ you/backups/Shellbuch/) und alles dorthin kopiert. Das hat schon vielen einige Nerven gekostet.

Es folgt nun ein Überblick zu einigen Optionen von rsync.


Tabelle 14.28   Gängige Optionen von rsync

Option Bedeutung
–a (archive mode): Kopiert alle Unterverzeichnisse, mitsamt Attributen (Symlinks, Rechte, Dateidatum, Gruppe, Devices) und (wenn man root ist) den Eigentümer der Datei(en)
–v (verbose): Gibt während der Übertragung eine Liste der übertragenen Dateien aus
–n (dry-run): Nichts schreiben, sondern den Vorgang nur simulieren – ideal zum Testen
–e Programm Wenn in der Quelle oder dem Ziel ein Doppelpunkt enthalten ist, interpretiert rsync den Teil vor dem Doppelpunkt als Hostnamen und kommuniziert über das mit –e spezifizierte Programm. Gewöhnlich wird hierbei als Programm ssh verwendet. Weitere Parameter können Sie diesem Programm in Anführungszeichen gesetzt übergeben.
–z Der Parameter –z bewirkt, daß rsync die Daten komprimiert überträgt.
––delete ––force ––delete–excluded Damit werden alle Einträge im Zielverzeichnis gelöscht, die im Quellverzeichnis nicht (mehr) vorhanden sind.
––partial Wurde die Verbindung zwischen zwei Rechnern getrennt, wird die nicht vollständig empfangene Datei nicht gelöscht. So kann bei einem erneuten rsync die Datenübertragung fortgesetzt werden.
––exclude=Pattern Hier kann man Dateien (mit Pattern) angeben, die man ignorieren möchte. Selbstverständlich sind hierbei reguläre Ausdrücke möglich.
–x Damit werden alle Dateien auf einem Filesystem ausgeschlossen, die in ein Quellverzeichnis hineingemountet sind.

Noch mehr zu rsync finden Sie auf der entsprechenden Webseite von rsync (http://rsync.samba.org/) oder wie üblich auf der Manual-Seite.


Rheinwerk Computing

traceroute – Route zu einem Rechner verfolgen  toptop

traceroute ist ein TCP/IP-Tool, mit dem Informationen darüber ermittelt werden können, welche Computer ein Datenpaket über ein Netzwerk passiert, bis es bei einem bestimmten Host ankommt. Beispielsweise:

you@host > traceroute www.microsoft.com
traceroute to www.microsoft.com.nsatc.net (207.46.199.30), 30 
hops max, 38 byte packets
 1  164–138–193.gateway.dus1.myhoster.de (193.138.164.1)  0.350 ms  0.218 ms  0.198 ms
 2  ddf-b1-geth3–2–11.telia.net (213.248.68.129)  0.431 ms  0.185 ms  0.145 ms
 3  hbg-bb2-pos1–2–0.telia.net (213.248.65.109)  5.775 ms  5.785 ms  5.786 ms
 4  adm-bb2-pos7–0–0.telia.net (213.248.65.161)  11.949 ms  11.879 ms  11.874 ms
 5  ldn-bb2-pos7–2–0.telia.net (213.248.65.157)  19.611 ms  19.598 ms  19.585 ms
...


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

 << zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Shell-Programmierung
Shell-Programmierung
bestellen
 Buchtipps
Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-Programmierung


Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern