Perl Net::SSH2 pty 模式和 EOF
Perl Net::SSH2 in pty mode and EOF
我正在使用 perl Net::SSH2 v0.48 并尝试执行从标准输入读取输入的远程脚本。此连接的通道使用 vt100 pty 以满足某些特定要求。将数据写入标准输入后,我还调用了 $channel->send_eof();
。但是远程脚本似乎根本没有收到任何 EOF 字符。远程脚本在 python 中,并且像 sys.stdin.read()
一样从 stdin 读取,它会挂起,直到它获得 EOF。当我禁用 pty 或将 chr(4)
附加为 EOF 字符的输入负载时,这个问题就得到了解决。
问题:
- 知道为什么
send_eof()
不起作用吗?
- 解决这个问题的最佳方法是什么?
- 如果启用了 pty,我可以假设不需要
send_eof()
吗?
P.S。我现在不包括任何代码片段,因为生产代码太复杂而无法解释问题,并且准备最小代码的工作版本需要一些时间。但我会尽快尝试用代码示例更新我的问题。
如果启用了 pty,我可以假设不需要 send_eof() 吗?
来自docs:
send_eof
Sends an EOF to the remote side.
After an EOF has been sent, no more data may be sent to the remote
process STDIN channel.
Note that if a PTY was requested for the channel, the EOF may be ignored by the remote server.
我正在使用 perl Net::SSH2 v0.48 并尝试执行从标准输入读取输入的远程脚本。此连接的通道使用 vt100 pty 以满足某些特定要求。将数据写入标准输入后,我还调用了 $channel->send_eof();
。但是远程脚本似乎根本没有收到任何 EOF 字符。远程脚本在 python 中,并且像 sys.stdin.read()
一样从 stdin 读取,它会挂起,直到它获得 EOF。当我禁用 pty 或将 chr(4)
附加为 EOF 字符的输入负载时,这个问题就得到了解决。
问题:
- 知道为什么
send_eof()
不起作用吗? - 解决这个问题的最佳方法是什么?
- 如果启用了 pty,我可以假设不需要
send_eof()
吗?
P.S。我现在不包括任何代码片段,因为生产代码太复杂而无法解释问题,并且准备最小代码的工作版本需要一些时间。但我会尽快尝试用代码示例更新我的问题。
如果启用了 pty,我可以假设不需要 send_eof() 吗?
来自docs:
send_eof
Sends an EOF to the remote side.
After an EOF has been sent, no more data may be sent to the remote process STDIN channel.
Note that if a PTY was requested for the channel, the EOF may be ignored by the remote server.