Verwendung von "&" und "|" im SSHPass-Skript

Ich erstelle ein Skript für meine Eltern auf ihren Macs, damit sie SSH auf meinen Linux-Computer zugreifen und Befehle senden, Popups erstellen usw.

Dies ist einer meiner Befehle:

sshpass -p Password ssh maliciouzzhd@10.0.0.1 export DISPLAY=:0 & mate-session-save --force-logout

Mein Problem ist, dass der Mac das "&" als nicht im sshpass-Skript behandelt und das Argument nach der Verwendung des Mac-Terminals ohne SSH ausführt.

So

sshpass -p Password ssh maliciouzzhd@10.0.0.1 export DISPLAY=:0 & mate-session-save --force-logout

ausführen würde

export DISPLAY=:0

in der SSH-Sitzung, aber

mate-session-save --force-logout

würde im Mac-Terminal ausgeführt werden.

Wenn mir jemand dabei helfen könnte, wäre es sehr dankbar.

Antworten (1)

SSH akzeptiert ein einzelnes Argument als Befehl, nicht mehrere, daher sollte die Befehlszeile so aussehen (beachten Sie die Anführungszeichen):

sshpass -p Password ssh maliciouzzhd@10.0.0.1 "export DISPLAY=:0 & mate-session-save --force-logout"

Aber die allgemeine Idee funktioniert möglicherweise nicht, weil Sie die X11-Weiterleitung nicht zugelassen haben ( -YSchalter zum hinzufügen ssh).

Danke, es funktioniert, aber es sagt jetztUnable to init server: Could not connect: Connection refused
Hast du X-Server auf deinem Mac installiert?
Wie überprüfe ich? Ich bin Mac nicht gewohnt, es sind meine Eltern
support.apple.com/en-us/HT201341 – Sie müssen XQuartz manuell installieren
Warten Sie ... Ich versuche, meinen Linux-Laptop über SSH von meinem Mac aus zu steuern. Brauche ich XQuartz auch auf meinem Mac? Mein Linux hat definitiv XServer-Sachen drauf.
Ja, Sie benötigen X-Server auf dem Mac, wenn Sie Windows von Ihrem Linux-System anzeigen möchten.