here-document에서 다음과 같이 SSH를 통해 명령을 실행하려고합니다.
ssh example.com <<END
sudo /etc/init.d/apache2 reload
END
sudo의 암호와 같이 입력이 필요한 것을 실행하려고 할 때를 제외하고는 정상적으로 작동합니다. 이 경우 다음 메시지가 나타납니다.
sudo: no tty present and no askpass program specified
-t
SSH 에서 플래그를 사용하여 다음 과 같은 의사 tty를 할당 할 수 있다는 것을 알고 있습니다 .
ssh -t example.com "sudo /etc/init.d/apache2 reload"
그리고 그것은 작동하지만 here-document와 같은 것을 시도하면 작동하지 않으며 tty가 존재하지 않는다는 동일한 오류가 발생합니다.
ssh -t example.com <<END
sudo /etc/init.d/apache2 reload
END
이 작업을 어떻게 수행 할 수 있습니까?
또한 왜 동일한 줄에 전달하는 대신 here-document로 작업하고 싶은지 궁금한 경우 입력 명령 (몇 개가있을 수 있음)이 스크립트에서 읽은 구성 파일에서 가져 오기 때문입니다. 따옴표, 큰 따옴표 등의 명령을 이스케이프하는 문제를 피한다고 들었습니다.