원격 장치의 tmux-session에 명령을 보내는 방법(ssh 사용)

원격 장치의 tmux-session에 명령을 보내는 방법(ssh 사용)

내 Vanila Arch Linux 시스템에서는 다음 명령을 사용하여 로컬 tmux-session(세션 ) 로 보낼 수 있습니다 .main

$ tmux send -t main.0 'echo asdf' ENTER

sshlocalhost또한 다음을 사용하여 원격 컴퓨터에 명령을 보낼 수도 있습니다 . (단지 데모를 위해 를 사용합니다 ):

$ ssh garid@localhost "ls /home"

내 터미널에서 명령을 보내고 싶습니다 tmux-session( remote-machine아래와 같이).

$ ssh -t garid@localhost "tmux send -t main.0 'echo asdf' ENTER"

그러나 다음과 같은 오류가 출력됩니다.

error connecting to /tmp/tmux-1000/default (No such file or directory)
Connection to localhost closed.

내가 여기서 뭘 잘못하고 있는 걸까?

답변1

댓글에는우리는 확인했습니다예상 명령,

ssh remote "tmux send -t main.0 'echo asdf' ENTER"

... remotelocalhost가 아닐 때 작동합니다.

우리는 아직확인됨연결 시 명령이 실패하는 이유 는 SSH 세션에서 변수가 설정되지 않았기 localhost때문입니다 . 이 환경 변수는 제어 소켓이 포함된 디렉터리를 생성해야 하는 위치를 결정하는 TMUX_TMPDIR데 사용됩니다 . tmux이 변수가 설정되지 않은 경우 유틸리티는 를 사용합니다 /tmp.

tmuxsshvia를 실행하면 세션이 비대화형 비로그인 세션이므로 변수가 설정 해제됩니다 . 따라서 변수 를 로 ~/.config/shell/profile설정 하지 않습니다 . 파일을 가져옵니다.TMUX_TMPDIR/tmp라르부스, 당신은 그것을 사용하지만 나는 그것에 대해 아무것도 모릅니다.

이제 다음과 같은 몇 가지 가능한 방법이 있습니다.

  1. 아무것도 하지 않습니다. ssh+ 명령의 의도된 대상 tmux은 결코 localhost가 아닙니다.

  2. TMUX_TMPDIR명령을 호출할 때 변수가 올바르게 설정되었는지 확인하세요 localhost.

    ssh localhost "env TMUX_TMPDIR='$TMUX_TMPDIR' tmux send -t main.0 'echo asdf' ENTER"
    

    ...하지만 로컬 변수의 값이 다른 호스트에 대한 올바른 값이라고 가정하므로 보편적인 솔루션이 될 가능성은 없습니다. 아무튼 sshto로 연결하는 localhost건 특이한 일이니까 그렇게 하는 대신 첫 번째 지점으로 루프백하고 아무것도 하지 않거나...

  3. 값을 TMUX_TMPDIR수정하여(변수를 설정하거나 할당 전체를 주석 처리하여) 로컬 기본값으로 재설정합니다. 그러나 LARBS가 이를 어떻게 사용하는지 모르겠습니다./tmp~/.config/shell/profile/tmp

관련 정보