J'utilise perl Net :: SSH2 v0.48 et j'essaie d'exécuter un script distant qui lit l'entrée de stdin. Le canal de cette connexion utilise vt100 pty pour certaines exigences spécifiques. Après avoir écrit des données à stdin, j'appelle également $channel->send_eof();
. Mais le script distant ne semble pas recevoir de caractère EOF du tout. Le script distant est en python et lit à partir de stdin comme sys.stdin.read()
et il se bloque jusqu'à ce qu'il obtienne un EOF. Ce problème est simplement résolu lorsque je désactive pty ou que j'appose chr(4)
avec une charge utile d'entrée qui est le caractère EOF.Perl Net :: SSH2 en mode pty et EOF
Questions:
- Toute idée pourquoi
send_eof()
ne fonctionne pas? - Quelle est la meilleure façon de résoudre ce problème?
- Puis-je supposer que
send_eof()
n'est pas requis si pty est activé?
P.S. Je n'inclus aucun extrait de code pour le moment car le code de production est trop complexe pour expliquer le problème et il faudra du temps pour préparer une version de code minimale. Mais je vais essayer de mettre à jour ma question avec un échantillon de code bientôt. Puis-je supposer que send_eof() n'est pas requis si pty est activé?
La version 0.48 est assez ancienne et buggée. Vous devriez en utiliser un plus récent. – salva