2009-09-30 27 views
5

Używam ssh z mojej aplikacji i muszę przekazać "-t-t" do ssh, aby działało poprawnie. W przeciwnym razie stdin mojej aplikacji jest zakłócany przez wywołanie ssh. Zmuszając terminal pseudo ssh za pośrednictwem -t -t pozwala uniknąć tego problemu, lecz skutkuje następującym komunikatem o błędzie niejasnym wraca z ssh, chociaż aplikacja wydaje się działać poprawnie inaczej:Używanie pseudo tty z ssh skutkuje ostrzeżeniem

tcgetattr: Inappropriate ioctl for device 

chciałbym aby pozbyć się tej wiadomości, aby ją powstrzymać, zamiast po prostu ją tłumić, ale nie jestem pewien, dlaczego tak się dzieje i co powinienem zrobić, aby temu zapobiec. Otrzymuję komunikat tylko wtedy, gdy -t -t przekazywane są do ssh.

Uwaga podobne pytanie został poproszony tutaj:

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

Człowiek strona dla ssh mówi:

-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. 

Odpowiedz

4

One mogą obejść ten problem przekazując -n ssh zamiast - t -t. Od strony 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.) 

Więc to jest inny sposób wokół kwestii stdin są pobierane z procesu wywołującego i podane do ssh, jednak chciałbym, aby zrozumieć, w jaki sposób uniknąć ostrzeżenie przy korzystaniu -t -t.

+0

Czy kiedykolwiek to rozgryzłeś? Chciałbym to zrozumieć, ponieważ w moim przypadku (nieco inaczej) nie mogę użyć '-n'. Zapytałem na https://serverfault.com/questions/851186/, więc nie wahaj się tam odpowiedzieć, zamiast tutaj, jeśli to konieczne. – Davide

+0

@Davide I przegłosowałeś na serwerze błąd. To jest jakiś czas temu, nie pamiętam unikania ostrzeżenia -t -t, ale mogłem się mylić. Zaktualizuj swój komentarz tutaj, jeśli znajdziesz tam dobrą odpowiedź. – WilliamKF

+0

Tak, tam jest dobra reakcja, spójrz! – Davide