web-dev-qa-db-fra.com

Obtenir stty: entrée standard: ioctl inapproprié pour le périphérique lors de l'utilisation de scp via un tunnel ssh

Par le titre, je reçois l'avertissement suivant lorsque j'essaie de scp à travers un tunnel ssh. Dans mon cas, je ne peux pas scp directement vers foo car le port 1234 sur le périphérique foo est transféré vers une autre barre de machine sur un réseau privé (et bar est la machine qui me donne un tunnel vers 192.168.1.23).

$ # -f and -N don't matter and are only to run this example in one terminal
$ ssh -f -N -p 1234 userA@foo -L3333:192.168.1.23:22
$ scp -P 3333 foo.py ubuntu@localhost:
ubuntu@localhost's password:
stty: standard input: Inappropriate ioctl for device
foo.py                                          100% 1829     1.8KB/s   00:00

Quelqu'un sait-il pourquoi je reçois cet avertissement concernant Inappropriate ioctl for device?

26
jonderry

J'ai eu exactement le même problème lorsque j'ai inclus la ligne suivante sur mon ~/bashrc:

stty -ixon

Le but de cette ligne était de permettre l'utilisation de Ctrl-s dans la recherche inversée de bash .

Ce lien a une solution (non disponible)

version Web Archive du lien ci-dessus

'stty' s'applique aux ttys, que vous avez pour les sessions de connexion interactives. .kshrc est exécuté pour toutes les sessions, y compris celles où stdin n'est pas un tty. La solution, à part le déplacer vers votre .profile, est de subordonner l'exécution à un shell interactif.

Il existe plusieurs façons de vérifier l'interecative Shell . Ce qui suit résout le problème de bash:

[[ $- == *i* ]] && stty -ixon
55
mMontu