
포트 전달을 사용하여 putty/plink를 시작하는 Windows 배치 파일을 작성하려고 합니다. Windows 부분은 지금까지 준비되었습니다.
start plink.exe -ssh -i key.ppk -L 1234:localhost:80 [email protected]
인증 후에 다른 명령을 실행하는 것을 허용하고 싶지 않기 때문에 다음 선언 ForceCommand
과 함께 사용하고 있습니다 Match User
.
Match User sampleUser
ForceCommand echo 'Success! Close this window to log out.'
문제는 내 배치 파일을 실행하면 퍼티가 올바르게 시작되지만 지정된 텍스트를 에코한 후 즉시 닫힌다는 것입니다.
내 생각은 다음과 같은 것을 사용하는 것입니다.
ForceCommand echo 'Success! Close this window to log out.' && waitTillControlC
이렇게 하면 putty/SSH가 연결을 유지하고 포트 전달을 종료하지 않습니다.
yes
, ping
또는 같은 명령을 생각해 read
보았지만
- 내 터미널 창에 스팸을 보내고 있습니다
- 실제로 작업을 수행하고 있거나 불필요한 CPU 로드를 생성하고 있습니다.
- 누군가 Enter 키를 누르면 예기치 않게 닫힐 수 있습니다.
누군가가 Ctrl+C를 눌러 종료하거나 퍼티 창을 닫아 SSH 연결을 닫을 때까지 영원히 아무 작업도 수행하지 않는 명령이 있습니까?
무엇을 위해 사용해야 합니까 waitTillControlC
?
답변1
다른 모든 답변이 여기서 루프를 사용하려는 이유를 모르겠습니다. 수면은 실제 목적을 위해 충분히 오래 기다릴 수 있으며 이를 수행하는 데 클럭 사이클을 사용하지 않습니다.
예를 들어, 여기서는 의심스러운 100년 동안 잠을 자려고 시도할 것이며 어쨌든 요청을 준수하기에 충분할 것입니다.
echo "Something"; sleep 36500d
또는 Enter키를 입력할 때까지 이 역시 차단되어야 합니다.
echo "Something"; read foo
답변2
대신 옵션 을 사용해 보세요 -N
. 로부터plink
선적 서류 비치:
-N don't start a shell/command (SSH-2 only)
ssh
이는 옵션 -N
에 설명된 대로 동작과 동일합니다 .매뉴얼 페이지:
-N Do not execute a remote command. This is useful for just for-
warding ports (protocol version 2 only).
답변3
이것은 (눈에 띄는) CPU 전력을 소비하지 않고 영원히 잠들어야 합니다.
echo "Something" && while true; do sleep 9999; done
또한 절과 같이 명령을 내릴 수 있는지도 잘 모르겠습니다 ForceCommand
. 명령을 쉘 스크립트에 넣어야 할 수도 있습니다.
#!/usr/bin/env bash
echo "Success! Close this window to log out." && while true; do sleep 9999; done
물론 이 스크립트는 서버의 일반 사용자가 쓸 수 없는 위치에 있어야 하며 권한이 있어야 합니다.
Match User sampleUser
ForceCommand /usr/bin/waitforever
편집하다
더 우아해 보이는 명령을 찾았습니다.
echo "Something" && tail -f /dev/null
tail -f
파일이나 스트림이 바이트를 반환할 때까지 기다립니다. (그렇지 않으면 실시간으로 로그를 보는 데 유용합니다.) /dev/null
바이트를 반환하지 않습니다. 그래서 명령은 영원히 잠들 것입니다.
답변4
당신은 잘못된 방향에서 이 문제를 해결하려고 합니다. 쉘이 종료되지 않는 것을 원하지 않고, 퍼티가 창을 열어두기를 원합니다.
http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter4.html#config-closeonexit- 무엇을 변경해야 하는지 정확하게 설명합니다. "깨끗하게 종료할 때만" 옵션을 사용하려면 exit 1
ForceCommand 끝에 추가하면 됩니다.
편집하다:제가 잘못 이해했습니다. 전달된 포트만 유지하고 ForceCommand의 출력을 유지하고 싶지는 않습니다. 그런 경우에는 그렇지 않습니다http://tartarus.org/~simon/putty-snapshots/htmldoc/Chapter4.html#config-ssh-noshell원하는 대로 하세요?