2009-09-30 1 views
5

내 응용 프로그램에서 ssh를 사용하고 있으며 올바로 작동하려면 ssh에 "-t -t"를 전달해야합니다. 그렇지 않으면 ssh에 대한 호출로 인해 내 응용 프로그램의 표준이 방해받습니다.ssh에서 pseudo tty를 사용하면 경고 메시지가 나타납니다.

tcgetattr: Inappropriate ioctl for device 

내가 원하는 다음 -t -t이 문제를 피할 수 있지만, 대신 SSH에서 돌아 오는 다음과 같은 모호한 오류 메시지가 발생을 통해 응용 프로그램이 제대로 다르게 작동하는 것 같다하지만 의사 터미널을 강제로, SSH를 이 메시지를 없애 버리는 대신에 그 메시지를 없애고 대신 그것을 왜곡시키지 말고 왜 그것이오고 있는지, 그리고 내가 그것을 막기 위해 무엇을해야하는지 확신하지 못합니다. -t -t가 ssh에 전달 될 때만 메시지를받습니다.

참고 비슷한 질문은 여기에 질문을 받았다 : ssh를위한

http://www.perlmonks.org/?node_id=664789

남자 페이지는 말한다 :

-t  Force pseudo-tty allocation. This can be used to execute arbitrary 
     screen-based programs on a remote machine, which can be very useful, 
     e.g., when implementing menu services. Multiple -t options force tty 
     allocation, even if ssh has no local tty. 

답변

4

한 가 대신 ssh를 -n을 전달하여 문제를 해결 할 수 있습니다 - t -t. SSH를 man 페이지에서 :

-n  Redirects stdin from /dev/null (actually, prevents reading from 
     stdin). This must be used when ssh is run in the background. A 
     common trick is to use this to run X11 programs on a remote 
     machine. For example, ssh -n shadows.cs.hut.fi emacs & will 
     start an emacs on shadows.cs.hut.fi, and the X11 connection will 
     be automatically forwarded over an encrypted channel. The ssh 
     program will be put in the background. (This does not work if 
     ssh needs to ask for a password or passphrase; see also the -f 
     option.) 

그래서이하지만, 내가 -t 사용하는 경우 경고를 방지하는 방법을 이해하고 싶습니다, 호출 과정에서 촬영 및 SSH에 제공되는 표준 입력의 문제를 해결하는 또 다른 방법입니다 -티.

+0

알아 냈습니까? 내 경우에는 (약간 다르게)'-n'을 사용할 수 없기 때문에 그것을 이해하고 싶다. 나는 https://serverfault.com/questions/851186/에서 물었고, 적절하다면 여기 대신 대답 해 주시기 바랍니다. – Davide

+0

@Davide 나는 서버 결함에 당신을 upvoted. 이것은 얼마 전, -t -t 경고를 피한 것을 기억하지 못하지만 오해를 불러 일으킬 수 있습니다. 저기서 좋은 반응을 얻으시면 여기에 의견을 보내주십시오. – WilliamKF

+0

예, 좋은 반응이 있습니다.보세요. – Davide