원격 화면에서 명령 실행

원격 화면에서 명령 실행

원격 서버에는 여러 개의 화면이 열려 있고 각 화면을 다른 목적으로 사용합니다. 예를 들어 ID가 "build"인 화면은 특정 프로그램을 컴파일하는 데 사용됩니다. 다음을 사용하여 언제든지 이 화면을 열 수 있습니다.

 ssh myserver -t screen -r build

그러나 호스트 컴퓨터에서 직접 원격 화면의 명령을 실행하고 싶습니다. 예를 들어, ls원격 화면에서 작업을 수행 하고 싶습니다 build. 나는 비슷한 것을 시도했습니다 :

 ssh myserver -t screen -r build -X ls .

하지만 행운은 없습니다.

어떤 아이디어가 있나요? 가능합니까?

감사해요!

편집: 내 실제 사용 사례:

./buildSomethingOnRemoteScreen() && ./fetchTheBuiltOutputAndDoSomethingWithIt()

답변1

붙여넣기 명령을 사용하여 모든 스크립트를 실행할 수 있습니다.

# read script into register p
ssh hostname screen -S build -X readreg p script_on_the_host
# paste contents of register p into running screen session
ssh hostname screen -S build -X paste p

답변2

나는 서버에서 tmux를 사용하고 있으며 (화면보다 유연함) 연결 후 직접 명령을 실행합니다.

ssh myserver -t 'tmux send-keys -t session-name "ls ./" C-m; tmux attach -t session-name '

해당 세션 이름으로 실행 중인 세션이 있는지 확인하기만 하면 됩니다. "ls ./"를 입력한 후 Cm은 ENTER를 시뮬레이션합니다.

답변3

원격 화면에서 명령을 실행하는 예:

ssh myserver -t screen -S build -X stuff "ls .\n"

-X옵션은 화면별 명령을 전달합니다. 이러한 명령 중 하나는 stuff단순히 주어진 문자열을 창의 입력 버퍼에 넣습니다(채웁니다). 개행 문자를 생략하면 명령이 입력되지 않습니다(Enter 키를 누르는 것을 잊어버린 것과 같습니다).직렬 터미널에는 \r명령 대신 명령을 입력해야 할 수도 있습니다.\n

사용 시 여러 번 실행되는 경우 -X세션 이름을 지정해야 합니다.-S

를 사용할 때 -X미리 선택된 창을 사용할 수 있습니다 -p. 그렇지 않으면 활성을 사용하십시오.

명령이 파일에 저장되어 있거나 직렬 터미널이 느리고 효과가 필요한 경우 readreg/ register및 명령을 사용할 수 있습니다 .pasteslowpaste

관련 정보