加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何通过套接字将`eof`信号发送到远程shell中运行的命

发布时间:2020-12-14 00:35:18 所属栏目:Linux 来源:网络整理
导读:How to send eof signal,over a socket,to a command running in remote shell? 我用Python编程,使用套接字,一个远程shell应用程序,在那里我发送命令在另一台PC上执行. 一切正常(对于大多数命令),除了像cat这样的命令.文件导致我的问题. 通常,我会用CTRL D(e

How to send eof signal,over a socket,to a command running in remote shell?

我用Python编程,使用套接字,一个远程shell应用程序,在那里我发送命令在另一台PC上执行.

一切正常(对于大多数命令),除了像cat>这样的命令.文件导致我的问题.

通常,我会用CTRL D(eof信号)终止上面的命令,但在我的客户端按CTRL D,不会将信号发送到远程shell.因此,我无法终止命令而且我被困住了.

有人有建议吗?

解决方法

当你输入ctrl-d时,eof不是一个信号,而是由tty驱动程序实现的读取长度为0.

如果您的遥控器没有在tty中运行,那么您就无法生成eof,因为您无法发送读取长度为0的数据包.但是,如果您运行脚本/ dev / null等程序作为远程shell中的第一个命令,那么这将把你的shell封装在一个伪tty中,你将能够发送一个真正的ctrl-d字符(十六进制0x04),并且pty会将其转换为eof并结束一只猫,例如.发送stty -a到遥控器以检查你的pty中是否启用了eol.

stty -a在我的终端上说lnext = ^ V(literal-next char)所以我可以输入ctrl-vctrl-d来输入一个真正的十六进制0x04字符.

我选择了脚本,因为我知道它有效地在通信中设置了伪tty,并且对数据流没有任何作用.这不是它的最初目的(参见其手册页),但这无关紧要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读