내 OS/X 노트북에서 "say done"이라고 입력하면 내 Mac에서는 "done"이라고 말합니다.
로컬에서는 다음을 수행합니다.
do-something.sh && say done
그러면 스크립트가 완료될 때까지 별도의 창/데스크톱에서 작업할 수 있습니다.
하지만 이제는 Mac에서 원격 Linux 시스템으로 SSH를 통해 연결됩니다. 내가 원하는 것은 특정 명령이 끝나면 "say done"을 실행하도록 Mac에 지시할 수 있는 것입니다. 그렇게 할 수 있는 좋은 방법이 있나요?
답변1
이를 즉각적으로 생각해낸 동료 A골든에게 감사 인사를 전한다. 이것은 그들의 반응을 잘라내어 붙여넣은 것으로, 작동하고 완벽하게 작동합니다.
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 호스트 SSH가 Mac으로 돌아가서 명령을 실행합니다 say
.
답변4
ssh linux do-something.sh && say done
원하는 일을 하는 것 같습니다. 원격 호스트와 Mac 간의 일부 통신을 구현하는 것은 불가능해 보입니다.
더 많은 명령을 실행하고 대기 시간이 걱정된다면 옵션을 사용하세요 ControlMaster
( ControlPersist
이미 답변된 질문이 많습니다).