Wenn ich mich via ssh von R1auf R2 einlogge, kann ich das mit dem Kommando exit auf der Kommandozeile beenden und bin zurück auf R1. In einem shell-script des Users auf R2, als der ich eingeloggt bin, funktioniert das scheinbar nicht. Wie kriege ich das hin?
Grüße, Günther
(gelöst) remote ausloggen
(gelöst) remote ausloggen
Zuletzt geändert von guennid am 03.03.2014 07:32:56, insgesamt 1-mal geändert.
Re: remote ausloggen
Du hast also etwas wieund das exit mitten drin beendet nicht die SSH-Verbindung, sondern das Skript und bar wird nicht ausgegeben? Das ist "richtig" so, denn die SSH-Sitzung liest von stdin und nicht die folgenden Zeilen des Skripts. Will man dies erreichen, ist ein sogenannte here-doc empfehlenswert:(Wobei das exit in beiden Faellen eigentlich ueberfluessig ist, weil die Shell im dem letzten Befehl automatisch beendet wird.)
Gruss Cae
Code: Alles auswählen
#!/bin/sh
ssh user@r1
echo foo
exit
echo bar
Code: Alles auswählen
#!/bin/sh
ssh user@r1 <<EOF
echo foo
exit
EOF
echo bar
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: remote ausloggen
Funktioniert! Danke!
Aber verstanden habe ich das nicht. Zweck dieser "heredoc"-Konstruktion ist doch die Ausgabe von Zeichen, wenn ich wikipedia und PHP richtig gelesen habe. Ich dagegen will gar nichts ausgeben, sondern einen Befehl ausführen.
Warum ich stapelverarbeitungsmäßig alles Mögliche in einem shell-script machen lassen kann, zum Beispiel
und das alles brav nacheinander abgearbeitet wird, aber nicht ein "exit" als letztes(!) Kommando, erschließt sich mir (noch) nicht.
Ein wahrhaft herrliches Beispiel für Desinformation liefert mal wieder wikipedia:
[1] https://de.wikipedia.org/wiki/Heredoc
Grüße, Günther
Aber verstanden habe ich das nicht. Zweck dieser "heredoc"-Konstruktion ist doch die Ausgabe von Zeichen, wenn ich wikipedia und PHP richtig gelesen habe. Ich dagegen will gar nichts ausgeben, sondern einen Befehl ausführen.
Warum ich stapelverarbeitungsmäßig alles Mögliche in einem shell-script machen lassen kann, zum Beispiel
Code: Alles auswählen
echo 'sag A'
sleep 10
echo 'sag B'
echo 0 > /proc/sys/vm/mmap_min_addr
Ein wahrhaft herrliches Beispiel für Desinformation liefert mal wieder wikipedia:
[1] Mal abgesehen davon, das ich das beim besten Willen nicht auf mein Problem zu beziehen vermag: Wer das versteht, hat es sicherlich nicht nötig, das zu lesen.Ein Heredoc, auch here document (von englisch, wörtlich hier dokument) genannt, ist ein Sprachkonzept der Informatik zur Spezifikation eines Zeichenfolgenliterals in Kommandozeileninterpretern ...
Der Bezeichnung entsprechend dienen Heredocs zur Definition von Textabschnitten. Im Unterschied zu herkömmlichen Stringdefinitionen werden enthaltene Zeilenumbrüche sowie Einzüge und viele Sonderzeichen im Text bewahrt.
[1] https://de.wikipedia.org/wiki/Heredoc
Grüße, Günther
- bmario
- Beiträge: 1257
- Registriert: 05.09.2007 12:15:47
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dresden
Re: (gelöst) remote ausloggen
Hallo,
ich versuche mal zu erklären, du führst einen Befehl, der normalerweise von der Kommandozeile interaktiv vom Benutzer Input erwartet, aus - in deinem Fall ssh. In einem Script, dass automatisch abläuft, ist das natürlich eher schlecht, da du ja gerade nicht davor sitzen willst und eintippen, was passieren soll
Du musst also erstmal bereitstellen, was geschehen soll. Das was du normalerweise eingeben würde, willst du es Speichern, dann nennt man das String oder Zeichenkette. Und nun willst du noch, dass es ssh übergeben wird. Sicher kennst du folgendes:
Damit wird der Inhalt der /eine/datei.txt als Eingabe an befehl übergeben. Nichts anderes machst du hier auch. Du übergibst deine Zeichenkette , die zufälligerweise wiederum Shell Code enthält, als Eingabe an ssh. Etwas andere Syntax, aber nichts anderes passiert da.
Hoffe das macht es etwas klarer
mario
ich versuche mal zu erklären, du führst einen Befehl, der normalerweise von der Kommandozeile interaktiv vom Benutzer Input erwartet, aus - in deinem Fall ssh. In einem Script, dass automatisch abläuft, ist das natürlich eher schlecht, da du ja gerade nicht davor sitzen willst und eintippen, was passieren soll
Du musst also erstmal bereitstellen, was geschehen soll. Das was du normalerweise eingeben würde, willst du es Speichern, dann nennt man das String oder Zeichenkette. Und nun willst du noch, dass es ssh übergeben wird. Sicher kennst du folgendes:
Code: Alles auswählen
# befehl < /eine/datei.txt
Hoffe das macht es etwas klarer
mario
Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse
als mit viel Mühe nichts zu schaffen. - Laotse