Zwei Shell-Befehle nach einander ausführen

bjoern.83

bjoern.83

Aktives Mitglied
Thread Starter
Dabei seit
14.12.2006
Beiträge
924
Reaktionspunkte
55
Hallo zusammen.

Ich habe eine (für euch) lächerliche Frage und würde mich über eine kurze Antwort freuen.

Folgendes Minimalbeispiel:
Ich habe ein per Doppelklick ausführbares Shell-Skript erstellt.

!# /bin/sh
ssh USER@IP_ZU_HOST && vncserver :1

Dann öffnet sich ein Terminalfenster und eine SSH-Verbindung wird aufgebaut, der VNC-Server wird aber nicht gestartet...
Wie ich dass denn bewerkstelligen (also SSH-Aufbauen und dann den Befehl vncserver :1 ausführen lassen)?

Über eine kurze Antwort würde ich mich freuen.
Vielen Dank!

Schöne Grüße
Björn
 
willst du den vnc server lokal ausführen oder auf dem server, den du mit ssh ansprichst?

in einem shell script schreibst du die befehle, die nacheinander ausgeführt werden soll halt auch nacheinander:
ssh user@host
vncserver :1

wenn du aber mittels ssh das ausführen willst, ist die syntax
ssh user@host command

also in deinem beispiel:
ssh user@host vncserver :1

die nutzung von && solltest du noch mal überdenken, weil ja nur abgearbeitet wird wenn das vorherige commando mit true endet.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: bjoern.83
Hallo oneOeight,

schön mal wieder von dir eine Antwort zu erhalten :)

Zu deiner Frage:
Ja, ich möchte den vncserver auf dem Server starten, welchen ich per ssh anspreche.

Ich führe das Shell-Skript nun so aus:


ssh user@host vncserver :1

Leider führt das dazu (nach Eingabe des Passwortes läuft das so runter):

Bjoerns-MacBook-Pro:~ Bjoern$ /Users/Bjoern/Desktop/Test.command ; exit;
Password:

New 'X' desktop is raspberrypi:1

Starting applications specified in /home/bjoern/.vnc/xstartup
Log file is /home/bjoern/.vnc/raspberrypi:1.log

logout
[Prozess beendet]
Was kann ich den tun, dass das Terminal nach dem Start des vncservers nicht beendet wird?
Also das der Befehl "exit" nicht ausgeführt wird und das Terminalfenster offen bleibt?

Vielen Dank!
 
Es wird kein "exit" ausgeführt, sondern statt der Shell nur der VNCserver gestartet.

Versuch mal
ssh user@host "vncserver :1; /bin/sh"

...ungetestet, aber könnte klappen ;)
Edit: hab es gerade mal getestet, funktioniert prinzipiell - allerdings fehlt der übliche Prompt hostname:verzeichnis>
 
  • Gefällt mir
Reaktionen: bjoern.83
Hallo roedert,

auch dir vielen Dank.

Genau das wollte ich gerade schreiben - grundsätzlich "geht" es, aber am Ende fehlt der Prompt...
Am Ende müsste (für mich) aber der Prompt stehen...

Bekommen "wir" das hin :D
 
das ist halt bei .command so.
entweder fügst du noch eine zeile ein, die auf einen tastendruck wartet.
oder du machst das ganze per applescript:

do script "ssh user@host vncserver :1"

da bleibt das fenster dann offen.
das applescript kannst ja auch als app speichern.

oder willst du, dass die ssh session aufbleibt?
 
Wozu brauchst du eigentlich vnc? Musst du wirklich den gesamten Desktop haben oder reicht auch ein einziges Programm?
Dann kannst du auch ssh mit der Option -X starten und dann im Terminal das grafische Programm starten ... dieses wird dann aber in einem lokalen X-Windows auf dem Mac geöffnet.
 
Ich sehe schon, ich hätte mich besser ausdrücken sollen - sorry!

Was will ich tun:
  • Ich möchte das Shell-Skript per Doppelklick starten.
  • Dann soll ich ein Terminalfenster öffnen und die SSH-Verbindung herstellen.
  • Nachdem die Verbindung steht, soll auf dem angesprochenen SSH-Server der VNC-Server gestartet werden.
  • Nachdem der VNC-Server gestartet wurde, soll am Ende der Prompt (des entfernten Servers) erscheinen.
  • Die Terminalsitzung soll daher nicht beendet sein (Logout) und die SSH-Verbindung soll auch nicht beendet werden.
Ich hoffe jetzt passt es :)
Entschuldigung für die Verwirrung und eure Geduld.
 
Wenn du den user auf dem Remote-Host nur für diesen Zugriff nutzt, könntest du ihm auch "vncserver: 1" als Autostart-Eintrag in die .profile eintragen.

dann reicht ein ssh user@host
 
  • Gefällt mir
Reaktionen: bjoern.83
da ist apple script besser:
tell application "Terminal"
do script "ssh user@host"
delay 3
do script "vncserver :1" in window 1
end tell

ggf. musst du es noch ein wenig anpassen, falls das passwort eingeben werden muss.
 
  • Gefällt mir
Reaktionen: bjoern.83
da ist apple script besser:
tell application "Terminal"
do script "ssh user@host"
delay 3
do script "vncserver :1" in window 1
end tell

ggf. musst du es noch ein wenig anpassen, falls das passwort eingeben werden muss.

So funktioniert es.

Ich danke dir oneOeight!
Seit Jahren zuverlässige Hilfe :)

Natürlich auch Danke an roedert.
Euch noch einen schönen Tag!
 
Zurück
Oben Unten