OS/X ラップトップで「say done」と入力すると、Mac では「done」と表示されます。
ローカルでは、次のようにします。
do-something.sh && say done
これにより、スクリプトが終了するまで、別のウィンドウ/デスクトップで操作できるようになります。
しかし、今は Mac からリモート Linux マシンに SSH 接続しています。私が望んでいるのは、特定のコマンドが終了したときに Mac に「say done」を実行するように指示することです。それを実現する良い方法はありますか?
答え1
これをすぐに思いついた同僚の A Golden に感謝します。これは彼らの返答をコピーして貼り付けたものですが、うまく機能し、この問題を完全に解決しています。
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! :-)
答え2
Mac で、受信したすべてのデータを次の宛先に送信する TCP サーバーを起動しますsay
。
mac $ while true; do nc -l 1234 | say; done
次に、SSH を使用するときは、-R
ポート 1234 をサーバーに転送します。
mac $ ssh -R 1234:localhost:1234 linux
これで、Linux サーバーは Mac 上の nc サーバーへのトンネルを持つようになり、を使用してnc
テキストを送信できるようになります。
linux $ echo done | nc localhost 1234
答え3
Mac に SSH サーバーが必要です。その後、次の操作を実行できます。
[you@mac]$ ssh linux
[you@linux]$ interactive_cmd; ssh mac say done
Linux ホストにログインしてコマンドを実行すると、完了すると Linux ホストが Mac に SSH で戻り、say
コマンドを実行します。
答え4
ssh linux do-something.sh && say done
希望どおりのようです。リモート ホストと Mac 間の通信を実装することは実現可能ではないようです。
さらに多くのコマンドを実行し、遅延が心配な場合は、ControlMaster
およびControlPersist
オプションを使用します (これに関する多くの質問は既に回答されています)。