development

ssh를 실행하고 즉시 명령을 실행하십시오.

big-blog 2020. 6. 19. 07:44
반응형

ssh를 실행하고 즉시 명령을 실행하십시오.


ssh 서버에 연결 한 후 명령을 실행하기 위해 UNIX 또는 bash 명령을 찾으려고합니다. 예를 들면 다음과 같습니다.

ssh name@ip "tmux list-sessions"

위의 코드가 작동하면 세션이 나열되지만 즉시 연결이 끊어집니다. 서버 쪽의 sshrc에 넣으면 작동하지만 클라이언트쪽에 입력 할 수 있어야합니다. 명령을 실행하고 로그인하고 창을 연 다음 설정 한 명령을 실행하고 싶습니다. 난 노력 했어

[command] | ssh name@ip

ssh name@ip [command]

ssh name@ip "[command]"

ssh -t name@ip [command]

ssh -t 'command; bash -l'

명령을 실행 한 다음 완료되면 로그인 쉘을 시작합니다. 예를 들면 다음과 같습니다.

ssh -t user@domain.com 'cd /some/path; bash -l'

옵션이 활성화 된 LocalCommand경우 명령 줄 옵션을 사용할 수 있습니다 PermitLocalCommand.

ssh username@hostname -o LocalCommand="tmux list-sessions"

사용 가능한 옵션에 대한 자세한 내용은 ssh_config매뉴얼 페이지를 참조하십시오.


이것은 아니다 확실히 당신이 찾고있는,하지만 비슷한 상황에서 유용하다고 한 것을.

최근에 다음을 추가했습니다 $HOME/.bashrc(bash 이외의 쉘에서 비슷한 것이 가능해야 함).

if [ -f $HOME/.add-screen-to-history ] ; then
    history -s 'screen -dr'
fi

screen하나의 특정 컴퓨터에서 세션을 계속 실행하고 ssh있으며 해당 컴퓨터에 대한 연결이 끊어 질 때 문제가 발생하여 screen -dr다시 연결할 때마다 다시 실행해야 합니다.

그 추가와 함께 내 홈 디렉토리에 해당 (빈) 파일을 만든 후 screen -dr쉘이 시작될 때 자동으로 내 기록에 명령이 있습니다. 다시 연결 한 후 입력 만하면 Control-P Enter화면 세션으로 돌아갑니다. 또는 무시해도됩니다. 그것은 유연하지만 아니다 아주 자동 및 귀하의 경우는 입력보다 더 쉽다 tmux list-sessions.

history -s명령을 무조건 으로 만들 수 있습니다 .

이를 위해서는 $HOME/.bashrc각 대상 시스템에서 업데이트해야하므로 목적에 맞지 않을 수도 있습니다.

참고 URL : https://stackoverflow.com/questions/18522647/run-ssh-and-immediately-execute-command

반응형