Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl-Net::pty模式下的SSH2和EOF_Perl_Ssh_Eof_Pty - Fatal编程技术网

Perl-Net::pty模式下的SSH2和EOF

Perl-Net::pty模式下的SSH2和EOF,perl,ssh,eof,pty,Perl,Ssh,Eof,Pty,我正在使用perl Net::SSH2 v0.48并尝试执行一个远程脚本,该脚本从stdin读取输入。此连接的通道使用vt100 pty满足某些特定要求。在将数据写入stdin之后,我还调用了$channel->send_eof()。但是远程脚本似乎根本没有接收任何EOF字符。远程脚本使用python并从stdin读取,如sys.stdin.read(),它将挂起,直到获得EOF。当我禁用pty或使用输入有效负载(即EOF字符)追加chr(4)时,这个问题就得到了解决 问题: 知道为什么send

我正在使用perl Net::SSH2 v0.48并尝试执行一个远程脚本,该脚本从stdin读取输入。此连接的通道使用vt100 pty满足某些特定要求。在将数据写入stdin之后,我还调用了
$channel->send_eof()。但是远程脚本似乎根本没有接收任何EOF字符。远程脚本使用python并从stdin读取,如
sys.stdin.read()
,它将挂起,直到获得EOF。当我禁用pty或使用输入有效负载(即EOF字符)追加
chr(4)
时,这个问题就得到了解决

问题:

  • 知道为什么
    send\u eof()
    不起作用吗
  • 解决这个问题的最好办法是什么
  • 如果启用pty,是否可以假定不需要
    send\u eof()
  • 另外,我现在不包括任何代码片段,因为生产代码太复杂,无法解释问题,并且需要一些时间来准备最小代码的工作版本。但是我会尽快用一个代码示例更新我的问题。

    如果启用了pty,我是否可以假定不需要send_eof()

    发件人:

    send\u eof

    向远程端发送EOF

    发送EOF后,不能再向远程发送数据 处理STDIN通道

    请注意,如果为通道请求PTY,远程服务器可能会忽略EOF。


    远程服务器可能会忽略EOF
    ,这是否意味着即使我将EOF作为输入数据的一部分附加,也可能会忽略EOF?显然,这并没有发生,但似乎有更多的信息来了解整个情况。Tty设备不允许只关闭连接的一侧。这就是为什么在通道级别上的EOF请求被忽略的原因。版本0.48非常旧而且有缺陷。你应该用最近的。