
SSH 세션을 자동으로 닫지 않고 SSH를 통해 다른 컴퓨터에 연결한 후 자동으로 명령을 실행하고 싶습니다.
인터넷을 검색한 후 몇 가지 해결책을 찾았지만 그 중 어느 것도 내가 원하는 방식으로 작동하지 않았습니다.
ssh bla@bla "ls"
그러면 ls
원격 시스템에서 명령이 실행되고 출력이 표시되며 연결이 닫힙니다.
또한 ssh 구성 파일을 편집해 보았습니다.
Host bla
HostName bla
User bla
IdentityFile ~/.ssh/key
RemoteCommand ls
RequestTTY force
같은 문제입니다. SSH를 통해 연결하고, ls
명령을 실행하고, 출력을 표시한 다음 종료됩니다. 옵션 조차 RequestTTY
도움이 되지 않았습니다.
ssh bla@bla "ls ; bash"
실행 후 연결이 끊어지지 않지만 ls
전체 터미널 인터페이스가 표시되지 않고 me@machine:~$ thing
.
내가 실제로 원하는 것:
bash 별칭 또는 .ssh/config
원격 시스템에 연결하는 간단한 명령을 입력한 다음 거기에서 명령을 실행하고 터미널을 열어 둘 수 있는 항목입니다. 기본적으로 내가 직접 이 작업을 수행한 것처럼:
유형
ssh blah@blah
연결한 후 다음을 입력합니다.
ls
답변1
ssh bla@bla "ls ; bash"
실행 후 연결이 끊어지지 않지만
ls
전체 터미널 인터페이스가 표시되지 않고 일부 기본 명령줄만 표시되지 않습니다me@machine:~$
.
명령(예: 위)을 지정하면 ls ; bash
SSH 서버는 의사 터미널을 제공하지 않습니다. 당신은 이것을 정확히 관찰했습니다.
반면에 단독은 ssh bla@bla
기본적으로 의사 터미널을 할당합니다. 그래서 이것이 당신이 원하는 것입니다. 의사 터미널 할당을 강제하려면 -t
또는 를 사용하세요 RequestTTY
.
옵션 조차
RequestTTY
도움이 되지 않았습니다.
원격 명령만 있으면 도움이 되지 않습니다 ls
. 필요 ls; bash
하거나 유사합니다.
tty를 요청했을 때 를 요청하지 않은 것 같습니다 bash
. 그리고 bash
이후에 요청했을 때 ls
tty를 요청하지 않았습니다. 다음 두 가지가 모두 필요합니다.
ssh -t bla@bla "ls; bash"
Note에서는 ls
의사 터미널도 사용합니다. 의 "더 넓은 그림" 섹션을 읽어 보십시오.내 이 대답차이점을 알아보기 위해(특히 "특이한 점이 있습니다"라고 읽는 경우)
답변2
me@machine을 제거하려면 PS1 환경 변수를 설정해야 합니다. 노력하다:
ssh bla@bla "PS1=\"\"; ls; bash"