2011-08-02 6 views
12

원격 호스트에 ssh에 간단한 간단한 스크립트를 작성하고 Django 앱의 디렉토리에 CD를 작성하고 manage.py shell을 실행하려고합니다. 지금까지 내가 가지고있는 것 :SSH를 장고 쉘로 바꾸기

ssh -i mysite.pem [email protected] "cd /usr/local/myapp; /bin/bash -i -c \"python manage.py shell;\"" 

이것은 내 명령에서 출력을 볼 수없는 경고와 함께 작동하는 것 같습니다. 내가 보는 모든 것입니다 :

Python 2.6.4 (r264:75706, Jun 4 2010, 18:20:16) 
[GCC 4.4.4 20100503 (Red Hat 4.4.4-2)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
(InteractiveConsole) 

입력 한 다음 입력을 누르면 나는 표준 출력에서 ​​아무것도 보이지 않습니다. 그러나 구문 적으로 유효하지 않은 Python을 입력하면 stderr에서 파이썬 추적을 볼 수 있습니다.

그 밖의 무엇이 내가 뭘 놓치고 있습니까?

답변

17

-t 옵션을 ssh으로 전달하십시오.

강제 의사 할당. 원격 시스템에서 임의의 화면 기반 프로그램을 실행하는 데 사용할 수 있습니다. 메뉴 서비스를 구현할 때. 여러 -t 옵션은 ssh에 로컬 tty가 없더라도 tty 할당을 강제합니다. 단자 이탈 등 같은 라인 편집 인터프리터 등 루틴 실패를 사용하는 프로그램을 만드는 적절한 의사 TTY를 할당하지 않는다 ssh host command 실행 기본적

. 그것은 할 수

ssh -t -i mysite.pem [email protected] python /usr/local/myapp/manage.py shell 

, 그러나 당신이했던 것처럼 필요 bash는 다른 층에 감아하기 :

따라서, 당신의 한 줄이 될 수 있습니다. ssh host command은 실제로 command을 문자열로 사용하여 사용자의 기본 쉘 ( cd과 같은 쉘 관련 작업을 수행 할 수 있음)에 전달되므로 bashbash 내에 실행해야하는 이유를 생각할 수 없습니다.

+1

"매우 흥미로운 질문입니다! 저는 답변을 찾기 위해 지금 실험 중이며, 더 많은 것을 추가하기 위해 편집 할 것입니다"부분은 도움이되지 않습니다. 그것을 제거하고 해설을하지 않고 답을 끓일 수 있습니까? –

+0

감사합니다. 너무 가까웠다. – Cerin

+0

'cd '부분은 필요 없다.'ssh -t -i mysite.pem root @ remotehost 'python /usr/local/myapp/manage.py shell'' –