Ausführen lokaler Befehle unter OSX, wenn der Befehl in einer SSH-Sitzung abgeschlossen ist

Ausführen lokaler Befehle unter OSX, wenn der Befehl in einer SSH-Sitzung abgeschlossen ist

Auf meinem OS/X-Laptop kann ich „Sag fertig“ eingeben und mein Mac sagt „fertig“.

Vor Ort würde ich einfach Folgendes tun:

do-something.sh && say done

Und so kann ich in separaten Fenstern/Desktops herumspielen, bis das Skript fertig ist.

Aber jetzt stelle ich per SSH von meinem Mac aus eine Verbindung zu einem Remote-Linux-Rechner her. Ich möchte meinem Mac sagen können, dass er „say done“ ausführen soll, wenn ein bestimmter Befehl abgeschlossen ist. Gibt es eine gute Möglichkeit, das zu tun?

Antwort1

Hut ab vor einem Kollegen, A Golden, der sofort darauf gekommen ist. Dies ist eine Kopie ihrer Antwort, die funktioniert und das Thema perfekt auf den Punkt bringt.

I picked "say-hi-locally" and set it up on my linux server as:
alias say-hi-locally="echo EMIT SAY HI"

Then, since I use ITerm2 as my local terminal, I set up a trigger in ITerm2 with the regexp "EMIT SAY HI" and told that to run the local command "say hi"

Now I can do:
do-something.sh; say-hi-locally

and when it finishes it will echo "EMIT SAY HI" which ITerm2 will then pick up and then my computer says "hi" to me! :-)

Antwort2

Starten Sie auf Ihrem Mac einen TCP-Server, der alles, was er empfängt, an folgende Adresse sendet say:

mac $ while true; do nc -l 1234 | say; done

Wenn Sie dann SSH verwenden, leiten Sie -RPort 1234 an Ihren Server weiter:

mac $ ssh -R 1234:localhost:1234 linux

Jetzt sollte Ihr Linux-Server über einen Tunnel zum NC-Server auf Ihrem Mac verfügen und Sie können ncdamit Text dorthin senden:

linux $ echo done | nc localhost 1234

Antwort3

Sie benötigen einen SSH-Server auf Ihrem Mac. Dann können Sie Folgendes tun:

[you@mac]$ ssh linux
[you@linux]$ interactive_cmd; ssh mac say done

Sie melden sich bei Ihrem Linux-Host an, führen den Befehl aus, und wenn dies erledigt ist, stellt der Linux-Host per SSH eine Verbindung zu Ihrem Mac her und führt den sayBefehl aus.

Antwort4

ssh linux do-something.sh && say done

sieht so aus, als ob Sie tun, was Sie wollen. Die Implementierung einer Kommunikation zwischen dem Remote-Host und Ihrem Mac scheint nicht machbar.

Wenn Sie mehr Befehle ausführen möchten und sich Sorgen über Latenz, Nutzung ControlMasterund ControlPersistOptionen machen (viele Fragen dazu wurden bereits beantwortet).

verwandte Informationen