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"
의사 ls
터미널도 사용됩니다. "더 넓은 그림" 섹션을 읽어보세요.내 대답차이점을 알아두십시오(특히 "특이한 점이 있음" 부분).
답변2
me@machine을 제거하려면 PS1 환경 변수를 설정해야 합니다. 노력하다:
ssh bla@bla "PS1=\"\"; ls; bash"