2009-09-30 4 views
5

J'utilise ssh depuis mon application et je dois passer "-t -t" à ssh pour qu'il fonctionne correctement. Sinon, le stdin de mon application est interféré par l'appel à ssh. Forcer un pseudo-terminal à ssh via -t -t évite ce problème, mais les résultats plutôt que dans le message d'erreur suivant obscure en revenant de ssh, bien que l'application semble fonctionner correctement autrement:L'utilisation de pseudo tty avec ssh entraîne un avertissement

tcgetattr: Inappropriate ioctl for device 

J'aimerais se débarrasser de ce message pour l'empêcher de se produire au lieu de simplement le supprimer, mais je ne suis pas sûr de savoir pourquoi cela arrive et ce que je devrais faire pour l'empêcher. Je reçois seulement le message quand -t -t est passé à ssh.

note une question similaire a été posée ici:

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

La page de manuel pour ssh dit:

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

Répondre

4

On peut contourner le problème en passant -n ssh au lieu de - t -t. A partir de la page man ssh:

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

Voilà donc un autre autour de la question de stdin prises de processus d'appel et donné à ssh, cependant, je voudrais comprendre comment éviter l'avertissement lors de l'utilisation -t -t.

+0

Le saviez-vous déjà? Je voudrais comprendre cela aussi parce que dans mon cas (légèrement différent) je ne peux pas utiliser '-n'. Je ai demandé à https://serverfault.com/questions/851186/ alors n'hésitez pas à y répondre au lieu d'ici, le cas échéant. – Davide

+0

@Davide Je vous a mis à jour en cas de panne du serveur. Cela fait un moment, je ne me souviens pas d'avoir évité l'avertissement -t -t, mais je pourrais me méprendre. S'il vous plaît mettre à jour votre commentaire ici si vous obtenez une bonne réponse là-bas. – WilliamKF

+0

Oui, il y a une bonne réponse là-bas, jetez un oeil! – Davide