通过 telnet 发送击键

Posted

技术标签:

【中文标题】通过 telnet 发送击键【英文标题】:Send Keystrokes via telnet 【发布时间】:2017-10-30 11:50:14 【问题描述】:

如何通过 telnet 发送多个击键。在日常生活中,我连接到接受“ESC+3”和“ESC+E”之类的击键的服务器。现在我正在尝试使用一些程序来自动化这个过程。为此,我必须通过编程方式进行击键。如果它是单行命令意味着,它不会那么复杂。但应用程序也期望击键。那么,有什么办法可以解决这个问题。

【问题讨论】:

一些代码可能有助于理解您的意思。 @FelixPalmen write(fd,"hai",4); 这里的“Hai”是发送到服务器的数据。但是现在我想给 "ESC+E" 而不是 hai。 所以你只需要知道如何在c字符串文字中表达ESC:\x1b 是的......你是对的。像“\n”一样输入。并且 ESC 与另外一个键相结合。 @FelixPalmen \x1b 是用于 esc 吗? 【参考方案1】:

ESC 只是一个普通的(不可打印的)字符,ASCII 码为0x1b。因此,如果您有一个打开的文件描述符 fd 到您的服务,发送 ESC+E 将执行以下操作:

write(fd, "\x1bE", 2);

【讨论】:

【参考方案2】:

对于交互式 tty,有一个名为 expect 的程序。好久没用了,不过能找到这个链接:https://www.lifewire.com/linus-unix-command-expect-2201096。

我想它会做你想做的事。它最初是用 TCL 编写的(早在 Linux 发明之前)。 Python之类的东西可能有更新的版本,或者类似的东西。

这里是“模糊”:

INTRODUCTION

Expect is a program that "talks" to other interactive programs
according to a script. Following the script, Expect knows what
can be expected from a program and what the correct response
should be. An interpreted language provides branching and
high-level control structures to direct the dialogue.

【讨论】:

以上是关于通过 telnet 发送击键的主要内容,如果未能解决你的问题,请参考以下文章

Telnet使用

将击键发送到 PowerPoint 窗口

通过 Telnet 发送邮件

通过 Ruby Telnet 发送转义序列

Python 将击键发送到非活动应用程序

如何通过 Telnet 发送字符串?