Automator Shell-Skript ausführen

Razorback

Neues Mitglied
Thread Starter
Mitglied seit
09.01.2020
Beiträge
5
Hallo liebe Experten,

Ich habe mich auf einen Externen Server eingemietet, nun würde ich gerne mit Hilfe von dem Automator eine Schnellaktion "Shell-Skript ausführen" anlegen.
Ziel ist das es, dass sich die Terminal App öffnet und folgende Befehle automatisch eingeben:

ssh meinname@meinserver
PW eingabe
cd/home/hd34/gdrive

Wie könnte ich mein vorhaben umsetzen? Wäre das so möglich?
Danke fürs Antworten!
 

mj

Aktives Mitglied
Mitglied seit
19.11.2002
Beiträge
8.743
Nicht ganz so aber ähnlich: der SSH-Zugang muss passwortlos über dein Zertifikat erfolgen und der auszuführende Befehl muss SSH direkt übergeben werden:

ssh meinname@mainserver 'cd /home/hd34/gdrive'

Allerdings ist mir nicht klar was der CD bewirken soll. Damit wechselst du ja nur das Verzeichnis, anschließend wirst du unmittelbar wieder abgemeldet.
 

Razorback

Neues Mitglied
Thread Starter
Mitglied seit
09.01.2020
Beiträge
5
Hallo mj,

wie gesagt, wollte ich, mit einem Skript

1. mich beim externen Server Verbinden
2. Automatisch das Passwort eingeben lassen
3. Gleich in das richtige Verzeichnis wechseln

um dann dort arbeiten zu können. Gleich wieder beenden wollte ich das nicht. Es geht mit darum, nicht immer das Passwort und die Serveradresse eingeben zu müssen.
 

tigion

Aktives Mitglied
Mitglied seit
21.06.2006
Beiträge
1.161
Ein Möglichkeit wäre mit einem Texteditor eine Datei ssh-server.command anzulegen und in dieser deinen ssh-Aufruf unterzubringen. Ein Doppelklick auf diese Datei öffnet dann ein Terminal und führt das SSH-Kommando aus. Ich würde aber nicht das Passwort im Klartext reinschreiben, sondern wie von mj schon erwähnt dann eher auf ein Zertifikat setzen.

Damit man am Zielserver immer in ein bestimmtes Verzeichnis wechselt, könnte man es in die entsprechende .bashrc (.bash_profile), .zshrc mit `cd ...` aufnehmen.
 

Razorback

Neues Mitglied
Thread Starter
Mitglied seit
09.01.2020
Beiträge
5
ok ... so 50% habe ich Verstanden :)
Wie müsste der Befehl in der .sh Datei aussehen?
Code:
#!/bin/bash
ssh meinmane@meinserver.de
Passwort
cd/home/dh34/gdrive
oder wie muss ich das machen? Es stört mich nicht, wenn es das PW im Klartext steht.
 

tigion

Aktives Mitglied
Mitglied seit
21.06.2006
Beiträge
1.161
Nein, so einfach ist es nicht. SSH erlaubt direkt kein Passwort im Klartext. Nur grob:
  1. Zertifikate für passwortloses einloggen einrichten
  2. Eintrag in der ~/.ssh/config für meinserver.de mit Nutzername und Pfad zum Zertifikat anlegen
  3. lokale Datei *.command mit ssh meinserver.de
  4. im Server in der .bashrc (.bash_profile) oder .zshrc ein cd folder/ unterbringen (oder als Argument an den ssh Aufruf mit "cd folder/; bash -i" anhängen)
Vielleicht gibt es ja extra Terminals, welche so etwas übernehmen. Bspw. iTerm (selbst nicht probiert)
 

Razorback

Neues Mitglied
Thread Starter
Mitglied seit
09.01.2020
Beiträge
5
ok. Danke fürs erklären. Das ist mir zu viel aufwand für die 3 Befehle. Dann mache ich es eben wieder von Hand.
Thanks.
 

lisanet

Aktives Mitglied
Mitglied seit
05.12.2006
Beiträge
2.551
Nicht ganz so aber ähnlich: der SSH-Zugang muss passwortlos über dein Zertifikat erfolgen und der auszuführende Befehl muss SSH direkt übergeben werden:

ssh meinname@mainserver 'cd /home/hd34/gdrive'

Allerdings ist mir nicht klar was der CD bewirken soll. Damit wechselst du ja nur das Verzeichnis, anschließend wirst du unmittelbar wieder abgemeldet.
der Wechsel ims Verzeichni, ohne anschließendes logout, sollte so gehen:

ssh meinname@mainserver:/home/hd34/gdrive
 

lisanet

Aktives Mitglied
Mitglied seit
05.12.2006
Beiträge
2.551
ok. Danke fürs erklären. Das ist mir zu viel aufwand für die 3 Befehle. Dann mache ich es eben wieder von Hand.
Thanks.
Wenn du dir einen ssh-key erzeugst, mit dem du dich passwortlos einloggen kannst, dann ist das ein 2-Zeilen Shell-Script

Code:
#!/bin/bash
ssh meinname@mainserver:/home/hd34/gdrive
 

mj

Aktives Mitglied
Mitglied seit
19.11.2002
Beiträge
8.743
@lisanet Ich glaube nicht, dass das so funktioniert:

Code:
iMac:~ martin$ ssh centos7
Last login: Fri Jul 10 15:15:32 2020 from 192.168.1.28
[martin@centos ~]$ pwd
/home/martin
[martin@centos ~]$ exit
logout
Connection to centos7 closed.
iMac:~ martin$ ssh centos7:/home/martin
ssh: Could not resolve hostname centos7:/home/martin: nodename nor servname provided, or not known
iMac:~ martin$
 

lisanet

Aktives Mitglied
Mitglied seit
05.12.2006
Beiträge
2.551
aargh... Sch****, ich habe die Syntax von scp mit ssh verwechselt. Das geht mit ssh nicht. Sorry.
 
  • Gefällt mir
Reaktionen: mj

mj

Aktives Mitglied
Mitglied seit
19.11.2002
Beiträge
8.743
Rein theoretisch ließe es sich durch einen Befehl in der .bashrc lösen, vorausgesetzt auf dem Zielsystem kommt die bash zum Einsatz. Ansonsten halt .tcshrc oder Konsorten:

Code:
iMac:~ martin$ ssh centos7
Last login: Tue Jul 14 07:53:01 2020 from 192.168.1.28
[martin@centos ~]$ pwd
/home/martin
[martin@centos ~]$ echo "cd /etc" >> .bashrc
[martin@centos ~]$ logout
Connection to centos7 closed.
iMac:~ martin$ ssh centos7
Last login: Tue Jul 14 07:53:18 2020 from 192.168.1.28
[martin@centos etc]$ pwd
/etc
[martin@centos etc]$
Hat allerdings dann natürlich den Haken, dass es für alle SSH-Verbindungen dieses einen Benutzers gilt. Man müsste es also irgendwie noch einschränken indem vorab z.B. eine Environment-Variable exportiert und in der .bashrc dann abgefragt wird. Die natürlich wiederum in der sshd_config eingetragen werden muss damit sie bei der Verbindung nicht verloren geht.