Automator Shell-Skript ausführen

Razorback

Mitglied
Thread Starter
Dabei seit
09.01.2020
Beiträge
40
Reaktionspunkte
7
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!
 
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.
 
  • Gefällt mir
Reaktionen: Razorback
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.
 
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.
 
  • Gefällt mir
Reaktionen: Razorback
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.
 
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)
 
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.
 
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
 
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
 
@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$
 
aargh... Sch****, ich habe die Syntax von scp mit ssh verwechselt. Das geht mit ssh nicht. Sorry.
 
  • Gefällt mir
Reaktionen: mj
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.
 
Zurück
Oben Unten