Users4Users : Die besten NICHT-geheimen "Shell-Tricks" der Linux-User

Rain_Maker

Administrator
Teammitglied
Users4Users : Die besten NICHT-geheimen "Shell-Tricks" der Linux-User

Hallo,

Ja, ich weiß, die Überschrifthat B***-Zeitungs-Niveau, aber im Gegensatz zum Boulevardblatt, welches man besser nicht zu schräg hält, weil sonst das Blut raustropft (*SCNR*), hat dieser Thread den Sinn, nützliche Konsolenbefehle, die einem Vieles leichter machen, zu nennen und zu erklären.

Das Ganze sollte folgende Form haben.

1. Titel des Postings bitte so ändern, daß drin steht, was man mit diesem/n Befehl(en) machen kann.

2. Befehl nennen (am besten als [noparse]
Code:
[/noparse][/COLOR] Befehl(e) [COLOR='red'][noparse]
[/noparse]
)

3. Kurze Erklärungen.

Doppelpostings sind hier AUSDRÜCKLICH erwünscht, damit man anhand der jeweiligen Überschrift sofort weiß, um was es geht!

Greetz,

RM
 

Rain_Maker

Administrator
Teammitglied
Inhalt von Dateien anzeigen.....

Hier 3 nützliche Programme, die einem den Inhalt von (Text)dateien anzeigen können.

1. cat

Code:
cat /Pfad_zur_Datei/Dateiname
Zeigt den Inhalt der Datei an und beendet sich danach. Leider für grössere Dateien nicht besonders gut geeignet, deshalb braucht es "mehr".

2. more

Code:
more /Pfad_zur_Datei/Dateiname
Im Gegensatz zu cat, zeigt more immer nur einen Teil der Datei an und man kann mit der Leertaste bzw. ENTER nach unten Scrollen. Kann mit q beendet werden.
Nachteil: Zurückscrollen ist leider nicht möglich, aber "weniger ist mehr".

Deshalb==>

3. less

Code:
less /Pfad_zur_Datei/Dateiname
Wie more, aber man kann mit den Pfeiltasten vor und zurück scrollen.

Greetz,

RM
 

Kernelman

Member
Verzeichnisse wechseln, anlegen und löschen

1. cd - Verzeichnis wechseln
Code:
cd /lib/modules
wechselt ins Verzeichnis /lib/modules.

Den nächsten Unterordner erreicht man (ohne /) durch
Code:
cd precompiled
Da / immer den absoluten Pfad bezeichnet, würde durch cd /precompiled eine Fehlermeldung (Datei oder Verzeichnis nicht gefunden) erzeugt.


Code:
cd ..
wechselt ins nächst übergeordnete Verzeichnis (hier: /lib/modules).


Code:
cd ~
wechselt ins Home-Verzeichnis, je nachdem ob user oder root.


Eine feine Sache ist das automatische Vervollständigen der Verzeichnisnamen durch Dücken der TAB-Taste nach Eingabe des ersten oder des/der folgenden Buchstaben des jeweiligen Ordners.

Hier gilt: Versuch macht kluch.


2. mkdir - Verzeichnis anlegen
Code:
mkdir test
legt im aktuellen Verzeichnis einen neuen Ordner "test" an.


3. rmdir - Verzeichnis löschen
Code:
rmdir test
löscht den Ordner "test". Voraussetzung: der zu löschende Ordner muß leer sein.




...to be continued


Gruß
KM
 

benne

Moderator
Dateien erstellen, kopieren und verschieben/umbenennen und löschen

1. touch - Datei erstellen

Code:
touch example.txt[/]

Durch diesen Befehl wurde die Datei example.txt in dem aktuellen Verzeichnis, indem man sich befindet, erstellt.

2.a) [B]cp[/B] - Datei kopieren

[code]cp example.txt /Verzeichnis/zum/einfügen
cp steht für copy, dann die zu kopierende Datei aus dem aktuellen Verzeichnis und zum Schluss das Verzeichnis in welches kopiert werden soll.

2.b) mv - Dateien verschieben

Prinzipiel das gleiche Prozedere:

Code:
mv example.txt /Verzeichnis/zum/verschieben
2.c) Mit dem mv Befehl können die Dateien auch umbenannt werden:

Code:
mv example.txt beispiel.txt
Dieser Befehl ändert den Dateinamen von example.txt in beispiel.txt um.

3. rm - Datei löschen

Code:
rm bespiel.txt
Durch diesen Befehl wird die Datei beispiel.txt aus dem aktuellen Verzeichnis wieder gelöscht.

Schönen Gruß,
benne
 

Rain_Maker

Administrator
Teammitglied
Mehrere Programme aus der selben shell starten und kontrollieren

Hallo,

Das "Original" zu diesem Thread liegt übrigens hier.

Manchmal macht es Sinn ein Programm aus der shell zu starten, um z.B. eventuelle Fehlermeldungen lesen zu können. Wie kann man aber ein Programm, welches aus der shell gestartet wurde, nach Schließen des Konsolenfensters weiterlaufen lassen?

Hier am Beispiel des Texteditors kate:

Code:
kate&
das "&" hat die Funktion, daß das Programm im Hintergrund läuft und man in der shell normal weiterarbeiten kann.

Würde man nun die shell schliessen, würde in den meisten Fällen auch das gestartete Programm mit "abgeschossen". Deshalb nicht das Fenster schliessen, sondern sich ordentlich aus der Konsole abmelden.

Code:
exit
Alternativ auch STRG-D.

- Und wenn man das "&" vergessen hat?

Ganz einfach.

Man drückt die Tastenkombination STRG-Z. Dadurch wird das Programm angehalten (Probierts mal aus!). Nun gibt man
Code:
bg
ein und das Programm läuft im Hintergrund (bg=Background) weiter, Rest wie gehabt.

- Und wie hole ich ein Programm wieder in den Vordergrund?

Code:
fg
Muss man nicht weiter erklären, oder?

- Und wenn man mehrere Programme aus der selben Shell gestartet hat und ein bestimmtes in den Vordergrund holen will?

Nichts leichter als das, hierzu hilft der Befehl "jobs".

Machen wir mal ein Beispiel, anhand der beiden Programme kate und gedit.

Code:
kate &
(Man kann also auch ein Leerzeichen machen nach dem Befehl)

Code:
User@Rechner:~$ kate &
[1] 10280
gedit&
[2] 10282
User@Rechner:~$ jobs
[1]-  Running                 kate &
[2]+  Running                 gedit &
Beide laufen im Hintergrund, nun holen wir kate nach vorne, das geschieht mit fg und Aufruf der Jobnummer.

Die Nummern hinter den Klammern sind übrigens die sogenannten PID (=Process ID) die man zum "Abschiessen" eines Prozesses mit dem Befehl "kill" verwenden kann. Will man Prozesse nach Namen abschiessen dann geht das mit dem Befehl "killall Programmname". ACHTUNG, da man nach Namen "abschiesst", werden logischerweise ALLE Programme dieses Namens abgeschossen. Woher sollte das System auch wissen, welches man meint, wenn mehrere Prozesse den selben Namen haben? Dafür gibt es dann das killen mit PID, die ist IMMER eindeutig.

Code:
User@Rechner:~$ fg 1
kate
Da wir nun nichts tippen können, stoppen wir kate mit STRG-Z, schicken es nach hinten und holen anschliessend gedit nach vorne.

Code:
[1]+  Stopped                 kate
User@Rechner:~$ bg
[1]+ kate &
User@Rechner:~$ fg 2
gedit
Nett oder? Jetzt stoppen wir gedit, holen kate nach vorne und beenden kate mit STRG-C, danach holen wir gedit nach vorne und beenden es ebenfalls mit STRG-C.

Code:
[2]+  Stopped                 gedit
User@Rechner:~$ bg
[2]+ gedit &
User@Rechner:~$ fg 1
kate

User@Rechner:~$ fg 2
gedit

User@Rechner:~$
Greetz,

RM
 

TypeRyder

Member
Prozesse überwachen und steuern

Und wie erkenne ich nun, was auf meinem System läuft?
Auch dazu hält die Konsole einige nützliche Befehle bereit.

ps
Fangen wir mit der Auflistung der Prozesse an, die man mit
Code:
ps
in der rudimentären Version aufrufen kann.

Ich bevorzuge meist
Code:
ps -aux
, da ich hier wesentlich mehr Informationen zu den laufenden Prozesse bekomme. Wichtig ist auf jedenfall die Ausgabe der PID-Nummer, auf die ich dann später noch zu sprechen komme.

Die Ausgabe von "ps" kann man übrigens auch mit einer Pipe (|) kombinieren und z.B. an grep übergeben, um die Ausgabe nach einem bestimmten Prozess zu filtern. Beispiel:
Code:
ps aux | grep xmms
gibt mir alle Prozesse aus, die mit xmms zu tun haben.


top
Die ps-Ausgabe ist statisch und gibt nur eine Momentaufnahme zum Augenblick des Befehls. Wenn ihr sehen möchtet, welche Prozesse aktuell grade laufen und wieviel Resourcen sie verbrauchen, dann ist der Befehl
Code:
top
das richtige. Einfach mal ausprobieren und auch mal mit
Code:
man ps
oder
Code:
man top
die Manpages (quasi Hilfeseiten, Manual Pages, gibts zu fast allen Befehlen und Programmen] anzeigen lassen. Das ist übrigens auch ein praktischer Konsolenbefehl, den man dringend bemühen sollte, wenn man mit einem Programm nicht klarkommt oder nicht weiß, was es macht.


kill
Nun kommen wir zum "Killen", dem Beenden eines Prozesses. Wenn man einen Prozess als User beenden möchte, dann benötige ich die PID-Nummer des Prozesses, die ich mir per ps oder top holen kann. dann kann ich mit dem Befehl
Code:
kill [Prozessnummer]
den gewünschten Prozess schießen. Wenn sich der Prozess als hartnäckig erweist und sich mit einem einfachen kill-Befehl nicht abschiesen läßt, dann erweitere ich das ganze mit
Code:
kill -9 [Prozessnummer]
. Mit ps oder top kann ich jeweils auch kontrollieren, ob der Prozess tatsächlich weg ist. Welche weiteren Optionen der kill-Befehl noch bereit stellt, könnt ihr auch (wer hätte es gedacht) per
Code:
man kill
erfahren.
 

TypeRyder

Member
Dateien auflisten und finden

Wie kann ich mit Dateien arbeiten? Wie kann ich mir auf der Konsole angucken, welche Dateien ein Verzeichnis enthält? Wie finde ich eine Datei?
Dazu komme ich hier.

ls
Fangen wir mal mit ls an. Mit diesem Befehl
Code:
ls
kann ich mir den Inhalt des Verzeichnisses, in dem ich mich gerade befinde, anzeigen. Auf einigen Distributionen gibt es hier auch einen Alias mit Namen
Code:
dir
*g*

Auch der ls-Befehl hält eine Fülle weiterer Optionen bereit, die man (wie immer) mit "man ls" erfahren kann.

Wenn ich eine bestimmte Datei suche, dann kann ich das wahlweise an den Befehl anhängen, beispielsweise
Code:
ls (Dateiname)
oder aber über eine Pipe mit grep arbeiten, z.B.
Code:
ls | grep (Dateiname)

find
Was mache ich nun, wenn ich gar nicht weiß, wo ich eine Datei suchen muss? Für diese Fälle gibt es den Befehl find, den ich wie folgt aufrufe
Code:
find (Verzeichnissebene) -name (Datei- oder Programmname)
Nehmen wir als Beispiel die Datei "Kochrezepte.txt", die ich irgendwann mal irgendwo gespeichert habe. In fortschreitendem Alter läßt das Gedächnis manchmal nach und so kann ich mich absolut nicht mehr erinnern, wo ich die Datei hingepackt habe. Der find-Befehl fällt mir allerdings noch ein, also tippe ich fröhlich drauflos
Code:
find / -name Kochrezepte.txt
Das System sucht nun, beginnend im Wurzelverzeichnis, sämtliche Verzeichnisse durch, um mir dann hoffentlich einen Ort auszuspucken, an dem ich die Datei dann finde.


locate
Der Find-Befehl ist zum Suchen schonmal gut geeignet, braucht aber meist ein wenig, da er zeitnah sucht und zum Augenblick des Befehls das gesamte System durchackert. Nun hat man bei Unix / Linux aber freundlicherweise schon an so vergeßliche Menschen wie mich gedacht und eine Datenbank eingebaut, die in regelmäßigen Abständen eine komplette Bestandsaufnahme aller Dateien macht, meist per Cron-Befehl einmal täglich (je nach Konfiguration). Wie kann ich davon profitieren? Mit dem locate-Befehl.

Nehmen wir unser Beispiel von oben und ich suche wieder meine Kochrezepte.txt. An den find-Befehl erinnere ich mich grad nicht (ihr wißt, das Gedächniss...), aber der locate-Befehl fällt mir ein, also tippe ich lustig drauflos
Code:
locate kochrezepte.txt
. Das Ergebniss ist hier wesentlich fixer als der find-befehl, vorausgesetzt das die locate-Datenbank aktuell ist. Probiert beide Befehle einfach mal aus, wie immer gibts auch hier per "man" weitere Infos zum Befehl.

Nachtrag: (RM) SuSE-User müssen hierzu das Paket "findutils-locate" nachinstallieren. Ansonsten aber: Great Posting!
 

TypeRyder

Member
Befehle für den verwirrten Geist (whoami, pwd)

Auf das Thema "Vergesslichkeit" bin ich ja eben schon zu sprechen gekommen, dabei sind mir auch noch zwei weitere nützliche Befehle eingefallen.

whoami
Nehmen wir mal an, ich bin grade mit mehreren su-Verschachtelungen unterwegs oder habe mehrere Konsolen mit verschiedenen Benutzern offen und weiß grad nicht, als welcher Nutzer ich auf einer Konsole unterwegs bin. Kein Problem.
Per
Code:
whoami
kann ich mir sehr schnell ausgeben lassen, wer ich wirklich bin *g*.


pwd
Ähnliches gibts auch für Verzeichnisse. Per
Code:
pwd
kann ich mir den Namen des Verzeichnisses angeben lassen, in dem ich mich gerade befinde.


Auf der normalen Shell mag sowas unnütz erscheinen, aber es gibt auch Shell-Konfigurationen, die z.B. die Verzeichnisnamen nicht aufschlüsseln oder nicht klar erkennen lassen, als welcher User man gerade unterwegs ist. Hier können diese Befehle unter Umständen sehr nützlich sein. Und mittlerweile nehme ich einfach mal an, daß jeder weiß, wie er weitere Infos zum jeweiligen Befehl bekommt *g*
 

Rain_Maker

Administrator
Teammitglied
Was KANN ein Befehl überhaupt alles?

Hallo,

Schon mehrfach erwähnt, aber der Übersichtlichkeit halber nochmal extra erklärt (erleichtert die Suche für Querleser).

Eine Kurze Hilfe zu praktisch jedem Befehl erhält man mit:

Code:
Befehl --help

oder 

Befehl -h
Nicht immer funktionieren beide, aber eines von beidem klappt IMMER.

Ausführliche Hilfen enthalten die sogenannten "Man Pages", die es zu fast jedem Befehl gibt (allerdings nur auf Englisch).

Code:
man Befehl
Das Ganze funktioniert wie bei less (siehe weiter unten), Scrollen mit Pfeiltasten, Verlassen mit q.

Wer die SuSE-Handbücher installiert hat, kann es auch im Konqueror mit

Code:
help:/Befehl
probieren. Hier wird man aber bei shell-Befehlen weniger finden, dafür umso mehr bei KDE-Programmen.

Greetz,

RM
 

Rain_Maker

Administrator
Teammitglied
Informationen zur Hardware erhalten (Wichtig bei der Problemsuche!)

Hallo,

Hier ein paar nützliche Befehle, um zu sehen, welche Hardware eingebaut ist.

Unter Linux bringt es meist nicht viel, zu posten, was auf der Schachtel steht, sondern was das System (also der Kernel) melden.

- Allgemeine Informationen:

Code:
/usr/sbin/hwinfo
Das ist meist etwas unübersichtlich, aber wenn man eine gesamte Aufstellung der erkannten Hardware haben will, dann kann man das in eine Dateiausgabe umlenken und dann in aller Ruhe diese Datei durchstöbern.

Code:
/usr/sbin/hwinfo > /Pfad/wo/man/gerne/die/Datei/hätte/Dateiname
- PCI-Geräte

Code:
/sbin/lspci
- USB-Geräte

Code:
/usr/sbin/lsusb
- Welche Hardware meldet sich wie am System an (für externe Geräte z.B. an USB)?

Code:
dmesg
Meist sinnvoll in dieser Reihenfolge:

1. dmesg

2. entsprechendes Gerät einstecken

3. dmesg

Das, was hinten angehängt wurde, sind die Meldungen des neuen Gerätes.

Der Befehl 'dmesg' gibt auch sämtliche Bootmeldungen bezüglich Hardware aus, also auch nützlich bei Bootproblemen.
Nachteil an der Sache: Es wird meist ein ziemlicher Rattenschwanz an Meldungen ausgegeben, ähnlich wie bei 'hwinfo'.

Um die Länge der Meldung von dmesg zu kürzen, empfiehlt sich eine sogenannte "Pipe" auf das Programm 'tail' mit Angabe der Zeilenanzahl.

Code:
dmesg | tail -n 20
gibt die letzten 20 Zeilen von dmesg aus.

Mit Hilfe dieser Tools bleibt den Helfern hier das lange und teilweise mehrfache Nachfragen nach der verbauten Hardware, die vielleicht Probleme macht, erspart und die Hilfe kann sehr viel flotter von statten gehen.

Also, nutzt, was Euch das System an leistungsfähigen Tools schon zu bieten hat, es ist in Eurem Interesse!

Greetz,

RM
 

Kernelman

Member
Alle vorhandenen Shell-Befehle und ausführbare Programme auflisten

Möchte ich wissen, welche Befehle und Programme ich ausführen kann dann gebe ich folgendes ein:
Code:
<TAB> <TAB> y
Nach zweimaligem Drücken der TAB-Taste erscheint
Code:
Display all 3449 possibilities? (y or n)
y bedeutet "Feuer frei!" *g*


Es ist auch möglich, die Ausgabe über die Anfangsbuchstaben der Befehle/Programme einzuschränken. Das kann unter Umständen dann ganz nützlich sein, wenn man, wie TypeRyder, unter Gedächtnisschwund leidet, und die genaue Schreibweise des dringend gesuchten Befehls nicht mehr zusammenbringt.
So findet man das Objekt seiner Begierde, von dem bekannt ist, dass es mit "c" beginnt durch
Code:
c <TAB> <TAB> y
.

Gruß
KM (alias Otze)
 

TypeRyder

Member
Netzwerkcheck - ifconfig, route

Heute ein paar Basics zum Thema Netzwerk (achtung, wird etwas umfangreicher...)

Heute ist Internet weit verbreitet und viele haben auch einen Internetanschluss in den eigenen vier Wänden (zumindest laut Statistiken....). Manchmal kommt es dabei auch zu Problemen mit der Netzverbindung. Ein paar nützliche Hilfsmittel zur Fehlerbehebung und verschiedenen Analysen gibts jetzt hier (solange mein löchriges Gedächnis mitmacht...)

Auf die Konfiguration von pppoe und ähnlichen Späßen gehe ich hier direkt nicht ein, das machen wir ein andernmal *g*

1. ifconfig
Wie kann ich überhaupt feststellen, welche Netzwerkgeräte grade konfiguriert und aktiv sind? Hier hilft mir der ifconfig-Befehl (als root):
Code:
ifconfig
Nach der Eingabe ohne weitere Optionen bekomme ich alle aktiven Netzwerkgeräte angezeigt. Das sieht dann z.B. so aus:
Code:
(rechnername):/usr/bin# ifconfig
eth0    Protokoll:Ethernet  Hardware Adresse 00:00:00:00:00:00
          inet Adresse:192.168.1.30  Bcast:192.168.1.255
          Maske:255.255.255.0
          inet6 Adresse: fe80::230:5ff:fe4e:a52c/64
          Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2543022 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2283452 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000
          RX bytes:2383945866 (2.2 GiB)  TX bytes:1015751372 (968.6 MiB)

lo        Protokoll:Lokale Schleife
          inet Adresse:127.0.0.1  Maske:255.0.0.0
          inet6 Adresse: ::1/128 Gültigkeitsbereich:Maschine
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:322 errors:0 dropped:0 overruns:0 frame:0
          TX packets:322 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:0
          RX bytes:36951 (36.0 KiB)  TX bytes:36951 (36.0 KiB)
eth0 ist in diesem Fall die verwendete Ethernet-Netzwerkkarte, lo die lokale (interne) Schleife. Letztere ist bei einem Linuxsystem eigentlich IMMER eingerichtet, um interne Dienste (die Mails der Cronjobs etc.) abwickeln zu können.

Das obige Beispiel ist ein typischer Rechner, der per Kabel in einem Netzwerk hängt. Ein Beispiel für einen Internet-Gateway könnte so aussehen:
Code:
(rechnername):/usr/bin# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          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:2187098 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2363766 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1017929018 (970.7 MiB)  TX bytes:2118641243 (1.9 GiB)
          Interrupt:12 Base address:0x6000

eth1      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2395446 errors:67 dropped:0 overruns:0 frame:0
          TX packets:2217416 errors:0 dropped:0 overruns:0 carrier:0
          collisions:20375 txqueuelen:1000
          RX bytes:2140009798 (1.9 GiB)  TX bytes:1037166323 (989.1 MiB)
          Interrupt:12 Base address:0x6100

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:92 errors:0 dropped:0 overruns:0 frame:0
          TX packets:92 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:9323 (9.1 KiB)  TX bytes:9323 (9.1 KiB)

ppp0      Link encap:Point-to-Point Protocol
          inet addr:12.34.56.78  P-t-P:87.65.43.21  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:2394259 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2216239 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:2087264762 (1.9 GiB)  TX bytes:988332437 (942.5 MiB)
Im Unterschied zur ersten Ausgabe gibt es hier zwei Ethernet-Netzwerkkarten (eth0 und eth1), das Loopback-Device lo und zusätzlich noch ein ppp0-Device. Dies ist das angesteuerte DSL-Modem, das per pppoe (ppp over ethernet) die Verbindung zum Internet darstellt. Die Hardwareadressen und die ppp0-IPangaben sind im Beispiel manuell abgeändert.

Mit ifconfig kann man die Netzwerkkarten auch weiter konfigurieren, Infos dazu gibts wie immer bei Onkel "man".

2. route
Um bei obigem Beispiel des Internetgateways hängenzubleiben, schauen wir uns mal den route-befehl an. Von sich aus weis der Rechner normalerweise nicht, daß er andere Datenpakete weitergeben soll. Dies muss man ihm explizit sagen. Ein Teil dazu besteht in der Routing-Tabelle des Rechners, die man sich per
Code:
route
anzeigen lassen kann (wieder als root).

Bei dem Gatewaybeispiel von oben sieht das z.B. so aus:
Code:
(rechnername):/usr/bin# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
87.65.43.21     *               255.255.255.255 UH    0      0        0 ppp0
localnet          *                255.255.255.0   U     0      0        0 eth1
192.168.1.0     *                255.255.255.0   U     0      0        0 eth0
default         87.65.43.21    0.0.0.0         UG    0      0        0 ppp0
Die Tabelle zeigt mir die Zielangaben und Gatewayadressen der einzelnen Netzwerkgeräte an. Nur fürs Protokoll: Weitere Infos per "man route".
Kleine Anmerkung noch zur Routingtabelle: Damit das System routen kann, muss ihm gesagt werden, daß es IP_Forward zulassen soll. Ohne IP_Forward kein Routing!

Diese beiden Befehle gehören zur Grundanalyse bei Netzwerkproblemen (gleich nach dem obligatorischen Kabelcheck).
 

TypeRyder

Member
ping, whois, traceroute, nmap

1. ping
Der ping-Befehl gehört teilweise auch zur Netzwerkanalyse. Per Ping kann ich feststellen, ob ein anderer Rechner von außen erreichbar ist. Ich kann sowohl mit der IP-Adresse pingen als auch mit dem Domainnamen des Rechners. Im internen Netz geht das z.B. mit
Code:
ping 192.168.1.1
um den Rechner im internen Netzwerk mit der IP-Adresse 192.168.1.1 zu erreichen. Die Ausgabe sieht dann z.B. so aus:
Code:
(rechnername):/usr/bin# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.665 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.407 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.400 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.405 ms

--- 192.168.1.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.400/0.469/0.665/0.114 ms
Die Ausgabe zeigt mir, daß obiger Rechner a) erreichbar ist (er also über eine funktionierende Netzwerkschnittstelle verfügt, die vernünftig konfiguriert ist) und b) eine annehmbare Erreichbarkeit hat (zu sehen an der time-Angabe). Weitere Erklärungen zum ping-Befehl wie immer per "man".

Nehmen wir jetzt mal an, ich habe eine Adresse eines Chatusers, der schon lange nicht mehr reagiert hat. Auch hier kann ich einen Ping auf seine Adresse absetzen, dies sieht dann z.B. so aus:
Code:
(rechnername):/usr/bin# ping p549C4592.dip0.t-ipconnect.de
PING p549C4592.dip0.t-ipconnect.de (84.156.69.146) 56(84) bytes of data.
64 bytes from p549C4592.dip0.t-ipconnect.de (84.156.69.146): icmp_seq=1 ttl=59 time=174 ms
64 bytes from p549C4592.dip0.t-ipconnect.de (84.156.69.146): icmp_seq=2 ttl=59 time=140 ms
64 bytes from p549C4592.dip0.t-ipconnect.de (84.156.69.146): icmp_seq=3 ttl=59 time=111 ms
64 bytes from p549C4592.dip0.t-ipconnect.de (84.156.69.146): icmp_seq=4 ttl=59 time=112 ms

--- p549C4592.dip0.t-ipconnect.de ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 111.970/134.728/174.304/25.639 ms
Aus der Ausgabe kann ich auch hier erkennen, daß der Rechner a) online ist (sonst könnte ich ihn nicht pingen) und b) bekomme ich z.B. aus dem mir bekannten Domainname (in diesem Fall ein T-Online-Nutzer) auch die IP, mit der dieser aktuell unterwegs ist.
Normalerweise pingt der PING-Befehl übrigens endlos, das kann man mit "STRG+C" entweder abbrechen oder mit "-c[Zahl] auf eine maximale Anzahl pings in Höhe von [Zahl] einschränken.

2. whois
Was mache ich, wenn ich wissen will, wem eine Domain gehört? Ich könnte z.B. ins Impressum der jeweiligen Webseite schauen, aber das ist nur in einem kleinen Teil der Fälle erfolgreich (da es nicht überall eine Impressumspflicht gibt und zum anderen viele Betreiber auch ihr Recht auf Anonymität wahrnehmen und kein Impressum einstellen - was allerdings in D leicht teure Folgen haben kann :mad:). Will ich die Information schnell und auch möglichst genau haben, dann kann ich den whois-Befehl nutzen.

Nehmen wir als Beispiel das hiesige Forum:
Code:
(nutzer)@(rechnername):/usr/bin$ whois root-forum.org
NOTICE: Access to .ORG WHOIS information is provided to assist persons in
determining the contents of a domain name registration record in the Public Interest Registry
registry database. The data in this record is provided by Public Interest Registry
for informational purposes only, and Public Interest Registry does not guarantee its
accuracy.  This service is intended only for query-based access.  You agree
that you will use this data only for lawful purposes and that, under no
circumstances will you use this data to: (a) allow, enable, or otherwise
support the transmission by e-mail, telephone, or facsimile of mass
unsolicited, commercial advertising or solicitations to entities other than
the data recipient's own existing customers; or (b) enable high volume,
automated, electronic processes that send queries or data to the systems of
Registry Operator or any ICANN-Accredited Registrar, except as reasonably
necessary to register domain names or modify existing registrations.  All
rights reserved. Public Interest Registry reserves the right to modify these terms at any
time. By submitting this query, you agree to abide by this policy.

Domain ID:D112431116-LROR
Domain Name:ROOT-FORUM.ORG
Created On:20-Jan-2006 12:56:02 UTC
Last Updated On:22-Mar-2006 04:11:29 UTC
Expiration Date:20-Jan-2007 12:56:02 UTC
Sponsoring Registrar:PSI-USA, Inc. dba Domain Robot (R68-LROR)
Status:CLIENT DELETE PROHIBITED
Status:CLIENT RENEW PROHIBITED
Status:CLIENT TRANSFER PROHIBITED
Status:CLIENT UPDATE PROHIBITED
Registrant ID:ABM-9198395
Registrant Name:(Vorname Nachname)
Registrant Street1:(Strasse, Hausnummer)
Registrant Street2:
Registrant Street3:
Registrant City:Halle
Registrant State/Province:DE
Registrant Postal Code:06120
Registrant Country:DE
Registrant Phone:(Telefonnummer)
Registrant Phone Ext.:
Registrant FAX:(Faxnummer)
Registrant FAX Ext.:
Registrant Email:(Email-Adresse)
Admin ID:ABM-9198395
Admin Name:(Vorname Nachname)
Admin Street1:(Strasse Hausnummer)
Admin Street2:
Admin Street3:
Admin City:Halle
Admin State/Province:DE
Admin Postal Code:06120
Admin Country:DE
Admin Phone:(Telefonnummer)
Admin Phone Ext.:
Admin FAX:(Faxnummer)
Admin FAX Ext.:
Admin Email:(Emailadresse)
Tech ID:ABM-9198395
Tech Name:(Vorname Nachname)
Tech Street1:(Strasse Hausnummer)
Tech Street2:
Tech Street3:
Tech City:Halle
Tech State/Province:DE
Tech Postal Code:06120
Tech Country:DE
Tech Phone:(Telefonnummer)
Tech Phone Ext.:
Tech FAX:(Faxnummer)
Tech FAX Ext.:
Tech Email:(Emailadresse)
Name Server:NS1.FIEBIGWEBHOSTING.DE
Name Server:NS2.FIEBIGWEBHOSTING.DE
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Die whois-Ausgabe ist sehr umfangreich. Neben dem üblichen Disclaimer am Anfang, der auf die Datenschutzbestimmungen und die Nutzung der whois-Datenbanken informiert, erhalte ich die Informationen zur gewünschten Domain. Darin enthalten sind unter anderem die Informationen
a) Wem gehört die Domain? (im Beispiel die REGISTRANT-Informationen)
b) Wer ist der administrative Ansprechpartner? (Der ADMIN-C)
c) Wer ist der technische Ansprechpartner? (Der TECH-C)

Der administrative Ansprechpartner ist zuständig für alle INHALTLICHEN Fragen und zum Beispiel für die Verletzung der Impressumspflicht zuständig. Der TECH-C wiederum ist Ansprechpartner für alle technischen Probleme mit der Domain. Die entsprechenden Daten in Klammern werden bei einer whois-Abfrage natürlich ausgegeben, sind aber durch mich ersetzt worden (es ist keine gute Idee, Adressdaten, Emailadressen oder Telefonnummern in öffentlichen Foren zu posten...).
Zu weiteren Inhalten schaut euch bitte die MAN-Seiten und die darin angegebene weiterführende Literatur an.


3. traceroute
Mit dem traceroute-Befehl kann ich die verschiedenen Zwischenschritte von meinem Rechner zum Zielsystem verfolgen. Wenn ich die obige IP-Adresse z.B. nehme, dann bekomme ich bei einem Traceroute folgende Ausgabe:
Code:
(rechnername):/usr/bin# traceroute p549C4592.dip0.t-ipconnect.de
traceroute to p549C4592.dip0.t-ipconnect.de (84.156.69.146), 30 hops max, 40 byte packets
 1  * * *
 2  * * *
 3  87.65.43.21 (87.65.43.21)  160.262 ms  54.380 ms  67.778 ms
 4  ke-eb1.KE.DE.net.DTAG.DE (62.154.98.86)  83.400 ms  105.171 ms  199.235 ms
 5  217.0.69.53 (217.0.69.53)  261.658 ms  302.111 ms  215.920 ms
 6  p549C4592.dip0.t-ipconnect.de (84.156.69.146)  253.282 ms !A  146.999 ms !A  108.127 ms !A
Der Traceroute-Befehl hat eine Menge weiterer Optionen und ist für diverse Netzwerkanalysen sinnvoll, schaut euch doch einfach mal die man-Page zu traceroute an.


4. nmap
Einige kennen diesen Befehl eventuell noch aus dem Film "Matrix" (die Szene im Kraftwerk). nmap ist (ursprünglich) ein Analysewerkzeug, mit dem man seinen Computer auf mögliche Schwachstellen untersuchen kann, z.B. um seine eigene Firewallkonfiguration zu prüfen.

Ein Nmap-Befehl macht natürlich am meisten Sinn, wenn er von einem anderen Rechner außerhalb des Netzwerkes abgesetzt wird. Ein Beispiel:
Code:
(username)@server3:~ > nmap 217.0.116.67

Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-07-30 13:47 CEST
Note: Host seems down. If it is really up, but blocking our ping probes, try -P0
Nmap finished: 1 IP address (0 hosts up) scanned in 4.038 seconds
Im obigen Beispiel ist das System augenscheinlich gar nicht online. Eine zweite Abfrage mit angegebener Option "-P0"
Code:
(username)@server3:~ > nmap -P0 217.0.116.67

Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-07-30 13:48 CEST
Interesting ports on 217.0.116.67:
(The 1662 ports scanned but not shown below are in state: filtered)
PORT   STATE SERVICE
23/tcp open  telnet

Nmap finished: 1 IP address (1 host up) scanned in 34.059 seconds
zeigt nun, daß das System doch online ist und auf Port 23, einer Telnetverbindung, lauscht. Das System erwies sich oben bereits als recht dicht, ein folgender Test per telnet
Code:
(username)@server3:~ > telnet 217.0.116.67
Trying 217.0.116.67...
Connected to 217.0.116.67.
Escape character is '^]'.
Connection closed by foreign host.
zeigt dann, daß der Host zwar online ist, aber die eingehenden telnet-Verbindungen ablehnt. Der nmap-Befehl ist optimal dazu geeignet, um die eigenen Firewallregelsätze zu testen und gegebenenfalls zu verfeinern und sein eigenes System sicherer zu machen. Weitere Infos auch hier per man-Befehl. Eine sehr gute Webseite zu dem Thema ist: http://http://insecure.org/.

Legal Disclaimer: Das getestete System ist mein eigenes, das genutzte Testsysystem ein eigener externer Shellaccount.
 

Rain_Maker

Administrator
Teammitglied
rpm - die Basics

Hallo,

Für SuSE und einige andere Linux-Distributionen (z.B. Fedora/Red Hat) wird "RPM" als "eigentlicher" Paketmanger verwendet.

Egal, ob man nun sein System mit Yast/Yum/APT oder smart verwaltet, im Hintergrund werkelt immer RPM.

Hier nun die Basics zum Umgang mit RPM.

1. Pakete installieren

Code:
rpm -i Paketname.rpm
Wer es gerne etwas ausführlicher hat, der nutzt

Code:
rpm -ivh Paketname.rpm
Allgemein gilt, daß man auch mehrere Pakete "in einem Rutsch" bearbeiten kann, hierzu einfach nach einem Leerzeichen das nächste Paket anfügen.

ACHTUNG!: Dies gilt nur für Pakete, welche noch NICHT installiert sind, besser ist es folgenden Befehl zu verwenden.

2. Pakete updaten

Code:
rpm -Uvh Paketname.rpm
U="Update", wer hätts gedacht. ;) Man kann auch zur Neuinstallation eines Paketes '-U' verwenden, dann ist es eben ein "Update von nicht installiert auf installiert".

===> Ich würde eigentlich IMMER '-Uvh' zur Installation verwenden.

Die folgenden Befehle benötigen NUR den Paketnamen, nicht die Endung .rpm

3. Pakete entfernen

Code:
rpm -e Paketname
Es muss der EXAKTE Name des Paketes bekannt sein!

4. Und wenn man nicht mehr genau weiß, wie das Paket heisst? (Pakete suchen)

Code:
rpm -qa | grep -r Suchbegriff
Zumindest zum Suchbegriff sollte man natürlich eine Idee haben, wie das Paket heissen könnte.

Beispiel Kate:

Code:
rpm -e kate
error: package kate is not installed
Na wie heisst es denn?

Code:
rpm -qa | grep -r kate
kdeaddons3-kate-3.5.3-17.1
Wenn ich also Kate entfernen will, dann würde ich folgendes eingeben müssen.

Code:
rpm -e kdeaddons3-kate
Aber das mache ich natürlich nicht, ich brauch das Programm.

5. Testlauf (WICHTIG!)

Bevor man sich mit rpm "ins Abenteuer stürzt", sollte man vielleicht zunächst mal testen, was da los ist, wenn man die Aktion ausführen möchte, die man vor hat.

Code:
rpm -*Parameter_was_man_vor_hat* [B]--test[/B] Paketname(.rpm)
Hier ein äusserst dämliches Beispiel.

Code:
rpm -e --test kdebase3
error: Failed dependencies:
        libkateinterfaces.so.0 is needed by (installed) kdeaddons3-kate-3.5.3-17.1
        libkdecorations.so.1 is needed by (installed) kde3-windeco-diwide-0.2-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) kde3-windeco-powder-0.6-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) kde3-windeco-fahrenheit-0.1-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) kde3-windeco-suse2-0.3.2_1.0-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) kde3-windeco-mkultra-0.4-2.guru.suse100
        libkdecorations.so.1 is needed by (installed) kde3-windeco-deKorator-0.3-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) baghira-0.7-0.pm.2
        libkdecorations.so.1 is needed by (installed) kde3-windeco-alphacube-0.3-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) kde3-windeco-hypnotista-siyah-0.1-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) kde3-windeco-blended-0.3-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) kde3-windeco-linspire-clear-1.11-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) polymer-0.5.5-suse100.1
        libkdecorations.so.1 is needed by (installed) kde3-windeco-flatknifty-0.5-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) kde3-windeco-hypnotista-sade-0.1-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) kde3-comix-1.3.8-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) kde3-windeco-polyester-0.9.2-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) kde3-windeco-crystal-1.0.1-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) kdebase3-SuSE-10.0-21.5
        libkdecorations.so.1 is needed by (installed) kde3-windeco-serenity-0.9-1.guru.suse100
        libkdecorations.so.1 is needed by (installed) kdeartwork3-3.5.3-12.5
        libkhotkeys_shared.so.1 is needed by (installed) kdebase3-extra-3.5.3-28.1
        libkonq.so.4 is needed by (installed) musicman-0.16-0.pm.2
        libkonq.so.4 is needed by (installed) kdeaddons3-konqueror-3.5.3-17.1
        libkonq.so.4 is needed by (installed) krusader-1.70.1-1.guru.suse100
        libkonqsidebarplugin.so.1 is needed by (installed) kio_burn-0.9-0.pm.0
        libkonqsidebarplugin.so.1 is needed by (installed) baghira-0.7-0.pm.2
        libkonqsidebarplugin.so.1 is needed by (installed) kdeaddons3-konqueror-3.5.3-17.1
        libkonqsidebarplugin.so.1 is needed by (installed) kdeaddons3-sound-3.5.3-17.1
        libkonqsidebarplugin.so.1 is needed by (installed) amarok-1.4.1_1.0-1.guru.suse100
        kdebase3 is needed by (installed) kde3-windeco-diwide-0.2-1.guru.suse100
        kdebase3 is needed by (installed) musicman-0.16-0.pm.2
        kdebase3 >= 3.4 is needed by (installed) baghira-0.7-0.pm.2
        kdebase3 is needed by (installed) kde3-windeco-alphacube-0.3-1.guru.suse100
        kdebase3 >= 3.4 is needed by (installed) ksensors-0.7.3-0.pm.0
        kdebase3 is needed by (installed) kio-apt-0.13-0.oc2pus.1
        kdebase3 is needed by (installed) kdebase3-SuSE-10.0-21.5
        kdebase3 is needed by (installed) kdenetwork3-lan-3.5.3-8.1
        kdebase3 >= 3.5.3 is needed by (installed) kdepim3-3.5.3-17.3
        kdebase3 = 3.5.3 is needed by (installed) kdebase3-devel-3.5.3-28.1
        kdebase3 is needed by (installed) kdebase3-nsplugin-3.5.3-28.1
        kdebase3 is needed by (installed) kdebase3-session-3.5.3-28.1
Na das lassen wir doch mal lieber, oder?

"Es lieber lassen" ist der allgemeine Tipp, wenn man mit rpm solche Errors erhält, zum Auflösen von Paketabhängigkeiten gibt es die oben genannten Paketmanager.

6. Infos über ein Paket anzeigen lassen

a) Das Paket ist noch nicht installiert, man hat aber das RPM-Paket schon auf Platte.

Code:
rpm -qpil Paketname.rpm | less
Das Pipen auf "less" hat den Vorteil, daß man sich in Ruhe alles durchscrollen kann.

b) Das Paket ist installiert

Code:
rpm -qil Paketname | less
For more Information see (wie immer):

Code:
man rpm
Greetz,

RM
 

TypeRyder

Member
apt-get

Wenn Rain_Maker auf die RPM's für SuSE eingeht, dann darf natürlich auch apt-get (aus Debianersicht) nicht fehlen *g*

Die Quellen bearbeitet man natürlich in der /etc/apt/sources.list. Wie so ein Eintrag aussehen kann, findet ihr zuhauf im Internet (nutzt euer Google-Foo).

Per
Code:
apt-get update
aktualisiert ihr eure Paketquellen, um eine mögliche Neuinstallation oder ein Update des Systems einzuleiten.

Per
Code:
apt-get install (Programmname)
könnt ihr ein neues Paket installieren. apt-get löst eventuelle Abhängigkeiten normalerweise selbst auf und installiert notwendige Pakete automatisch mit UND schlägt auch weitere sinnvolle Pakete vor.

Per
Code:
apt-get remove (Programmname)
könnt ihr ein Programm auch wieder deinstallieren. Eine interessante Ergänzung dazu ist
Code:
apt-get remove --purge (Programmname)
bei dem nicht nur das Programm deinstalliert wird, sondern auch sämtliche Konfigurationsdaten zu diesem Programm gelöscht werden (das passiert beim normalen Deinstallieren nämlich nicht, die config-Dateien z.B. bleiben weiterhin auf dem System).

Per
Code:
apt-get upgrade
bringt alle Pakete eures installierten Systems auf den neuesten Stand. Mit der Erweiterung
Code:
apt-get dist-upgrade
werden auch Abhängigkeiten etc. automatisch aktualisiert.

Mit
Code:
apt-cache search (Suchbegriff]
könnt ihr nach Programmpaketen suchen, apt-get sucht dann in den quellen nach Paketen, die den Suchbegriff enthalten.

Weitere Optionen gibts natürlich auch - wie immer per
Code:
man apt-get
 

TypeRyder

Member
Für was zur Hölle ist dieses Programm...whatis?

Hallo zusammen,

beim arbeiten auf der Konsole stößt man ja manchmal auf ein Programm, von dem man nicht genau weis, für was es da ist. Ich könnte mir jetzt natürlich die manpage des Programms reinziehen (wie das geht, wißt ihr ja mittlerweile hoffentlich alle) oder in den Hilfeseiten / Infoseiten schmökern.

Möglicherweise habe ich aber grade keine Lust dazu und will einfach nur kurz und schmerzlos wissen, was es mit dem Programm auf sich hat. Hier kommt der whatis-Befehl zur Geltung.

Einfach kurz
Code:
whatis (programname)
eingeben und schon habe ich einen Tipp. Ein Beispiel dazu:
Code:
whatis ddate
ddate (1)            - converts Gregorian dates to Discordian dates

2. Wie in obigem Beispiel angegeben hält Linux auch einige Hilfsmittel bereit, die den Anhängern des Diskords nützlich sind *g* ddate ist eines dieser Programme, die die Daten aus dem Gregorianischen (also unserem normalen) Kalender in den diskordianischen Kalender umrechnen. Ein aktuelles Beispiel vom heutigen Tage:
Code:
ddate
Today is Pungenday, the 72nd day of Confusion in the YOLD 3172

Und was es mit dem Diskordianismus auf sich hat, erfahrt ihr z.B. HIER *g*
 

Jacko

Moderator
Programme aus der Konsole mit kstart starten ... KDE

Wenn man einige Zeit irgendein Linux nutzt, merkt man schnell, dass es oft viel einfacher ist, ein Programm direkt aus der Konsole (Shell, Bash ...) zu starten, als sich mühevoll mit der Maus durch verschiedene Menüs zu klicken.

Und ganz toll:
Alle KDE Nutzer können mit einem netten Tool names kstart auch genau bestimmen, auf welcher Arbeitsfläche, auf welcher Position und und und ... das gewünschte Programm gestartet werden soll.

Beispiel:
Ich möchte kate auf Arbeitsfläche 4 starten:
Code:
kstart --desktop 4 kate
Oder:
ksteak auf allen Arbeitsflächen:
Code:
kstart --alldesktops ksteak
Und wie (fast) immer kann man mit
Code:
kstart --help
viele weitere (und ausführlichere) Infos abfragen!

Grüße

Jacko
 

TypeRyder

Member
AW: Users4Users : Die besten NICHT-geheimen "Shell-Tricks" der Linux-User

Ich will mich mal wieder dem Thema Netzwerk zuwenden, speziell das Thema Telnet und ssh (und natürlich ein kurzer Exkurs, warum man lieber ssh verwendet als telnet).

Es gibt Situationen im Leben eines Admins, die das einloggen auf einem entfernten System (im folgenden als "Remote Host" bezeichnet) erforderlich machen.
Beispielsweise will ich Logs auf einem Webserver prüfen, vielleicht will ich auch an der Firewall rumbasteln, vielleicht nerven mich diese ganzen besch...eidenen Weboberflächen aber auch an und ich will "back to the root(s)" *g*

Wie aber komme ich drauf auf die Mühle?

Hierzu (aber nicht nur) dient der telnet bzw. der ssh-Befehl.

1. Telnet
Früher wurde meist das Telnetprotokoll genutzt. Es war und ist sehr umfangreich, bietet haufenweise Möglichkeiten (z.B. das Schreiben per Mails mittels telnet-login auf einem smtpserver, quasi "zu Fuß") und ist zudem sehr abhörfreundlich *g*

Code:
telnet (Rechnername oder IP-Adresse)
ermöglicht generell das Einloggen auf dem Remote Host, vorausgesetzt daß die Firewall der Gegenstelle dies zuläßt und der Port offen ist (wie man letzteres herausbekommt, wissen eifrige Leser dieses Threats ja sicher schon).

Den User (auf dem Remote Host) kann man per "-l"-Option bereits beim Aufruf anhängen oder im interaktiven Modus dann eingeben. Danach muss man dann das Passwort des Users eingeben.

2. ssh + scp
Wie aber oben schon erwähnt, ist telnet sehr abhörfreundlich. Es gibt bei dem Protokoll normalerweise keine Verschlüsselung, daher werden ALLE Daten einer telnetsitzung inklusive eures Logins und eures Loginpasswortes unverschlüsselt übertragen. Das heißt, daß jeder, der auf der Verbindung mitlauscht, nun euer Login inklusive Passwort nutzen könnte.

Um diese Schwachstelle zu umgehen, gibt es SSH (Secured Shell). SSH nutzt verschiedene Möglichkeiten der Verschlüsselung und des Loginverfahrens.

Code:
ssh (benutzername)@(rechnername oder ip)
Man kann den Nutzernamen auch weglassen und nur die Rechneradresse angeben, dann wird man zuerst nach dem Usernamen und dann nach dem Passwort gefragt. Bei obigem Aufruf wird man direkt aufgefordert, daß Passwort anzugeben und ist dann direkt auf dem Remote Host.

Es ist übrigens trotz Verschlüsselung NICHT empfehlenswert, sich auf dem Remote Host direkt als Root einzuloggen. Besser ist es, sich mit einem normalen Userlogin einzuloggen und dann lokal per su root werden (wenn man unbedingt rootrechte benötigt).

Neben dem reinen login auf einem remote Host per ssh kann ich z.B. auch per scp verschlüsselt Daten von Rechner A auf Rechner B kopieren.

Code:
scp (Pfad + Dateiname auf dem lokalen Rechner) (benutzername)@(rechnername):(Zielpfad)

beispielsweise
scp /etc/apt/sources.list typeryder@datenmüll.de:~/Daten/
In dem Beispiel kopiere ich vom lokalen Rechner die Datei sources.list im Verzeichnis /etc/apt auf den Remotehost datenmüll.de, bei dem ich mich mit einem login namens "TypeRyder". Mit der Tilde (~) wird bequem zum eigenen Homeverzeichnis des angegebenen Nutzers verwiesen. Der weitere Pfad ist relativ zum eigenen Homeverzeichnis das Verzeichnis "Daten" (absolut würde der Pfad so aussehen: /home/typeryder/Daten/).
Dann werde ich noch nach dem Passwort gefragt, wenn ich dies richtig eingebe, startet danach der Kopiervorgang.

Weitere Infos gibts natürlich wie immer per man.
 
Oben