
명령줄에서 퍼티를 실행하는 데 약간의 문제가 있습니다.-중논쟁. 이 문제에 대해 도움을 주시거나 알고 계신다면 더 좋은 방법을 제안해주세요 :)
명령("실행"에서):
putty -ssh user@machine -pw password -m C:\test.txt
"test.txt" 명령:
PROMPT_COMMAND='echo -ne "\033]0;'$( ifconfig | head -2 | tail -1 | awk '{print $2}')'\007"'
문제:
세션을 열었다가 바로 닫습니다.
무엇을 하려고 할까요: 정의된 제목을 사용하여 명령줄에서 SSH 세션을 엽니다.
감사해요.
답변1
나는 당신이 비슷한 것을 시도했다고 믿습니다이 답변. 하지만 문제는 거기에 제공된 샘플 명령이 서버의 파일에서 실행된다는 것입니다.
-m 스위치를 사용하여 실행할 명령으로 전달할 수 없습니다. PuTTY의 이 스위치흉내내는 것이다Linux 명령줄 SSH 클라이언트의 동작:
ssh user@foo command
user
이런 식으로 ssh는 서버 에 로그를 기록 foo
하고 그곳에서 실행 command
한 후 종료됩니다. -m PuTTY를 사용하면 동일한 작업을 수행하는 것 같습니다.
나의 제안
원격 서버에서 스크립트를 준비하고 PuTTY를 다른 방식으로 구성하는 것입니다. 우선 로그인 후 실행하고 싶은 명령어가 포함된 파일을 생성해야 합니다..title
cat > ~/.title
그런 다음 필요한 내용을 입력하거나 복사하여 붙여넣고 나중에 Ctrl+D를 누르세요. 지금은 제목 설정을 테스트해 보겠습니다.
echo -ne "\033]0;PuTTY\007"
위의 내용을 터미널에서 직접 시도해 볼 수도 있습니다. PuTTY의 창 제목이 변경되지 않으면 배포판이 이미 설정되었을 가능성이 있습니다.기본 PROMPT_COMMAND 변수. 터미널에서 다음 명령을 실행하여 확인할 수 있습니다.
echo $PROMPT_COMMAND
unset PROMPT_COMMAND
echo -ne "\033]0;PuTTY test\007"
핵심은 PROMPT_COMMAND
변수의 현재 값을 설정 해제하는 것입니다. 그런 다음 마지막 명령은 창 제목을 PuTTY test
.
내 솔루션
나에게 맞는 방법은 PuTTY에서 세션을 준비하는 것입니다.GUI의 "원격 명령" 상자로 설정:
/bin/bash --rcfile ~/.title
이 세션의 이름(예: SessionName)을 제공하고 PuTTY 설정의 첫 번째 페이지에서 "저장된 세션" 목록 근처에 있는 "저장" 버튼을 누르십시오. :)
그런 다음 PuTTY를 시작하고 이 세션을 로드하도록 지시할 수 있습니다.
putty -load SessionName -l user -pw password
예, 안타깝지만 저장된 세션에 대한 "원격 명령" 상자에 해당하는 명령줄이 없습니다. 그렇기 때문에 이 모든 장애물을 넘어야 합니다 :(
TL, DR 버전
이 모든 단계를 올바르게 수행한다고 가정하면 모든 것이 잘 작동할 것입니다.
~/.title
원격 컴퓨터에 스크립트 만들기- Bash를 실행하는 원격 명령으로 세션을 준비합니다.
~/.title
- PuTTY에게 시작 시 준비된 세션을 로드하고 사용자 및 비밀번호를 지정하도록 지시
전문가의 팁
명령줄(및 가능하면 스크립트)에서 일반 텍스트로 비밀번호를 지정하는 대신 SSH 키를 사용하고 Windows 트레이에서 'Pageant'(PuTTY 인증 에이전트)를 실행하는 방법을 배워야 합니다.
답변2
지금은 테스트할 SSH가 없지만http://www.derkeiler.com/Newsgroups/comp.security.ssh/2012-04/msg00005.html
"당신도 창을 계속 열어두고 싶다면 스크립트 끝에 sleep 10을 입력하고 10초 동안 기다리세요. 쉘을 사용하려면 exec /bin/bash
마지막에 사용하세요. 샤이"
통찰력을 제공하는 두 개의 다른 링크.
PuTTY: 로그인 후 원격 명령을 실행하고 셸 실행을 유지합니다.
Linux에서 PuTTY 제목 표시줄에 표시되는 항목을 어떻게 선택합니까?
Barlop님이 추가함
다음은 퍼티를 사용하지 않고 cygwin에서 openssh를 사용합니다. a.a
파일에는 프롬프트를 변경하는 ls 또는 명령이 포함될 수 있습니다. 지역적입니다.
$ ssh 127.0.0.1 "cat | bash" < a.a
관련, 제가 방금 게시한 답변을 참조하세요 -https://unix.stackexchange.com/questions/87405/how-can-i-execute-local-script-on-remote-machine-and-include-arguments/208952#208952