如何在Python中使用paramiko库发送箭头键?

2024-01-12

我正在使用 python 2.7 和代码 ssh 客户端paramiko图书馆,我用myhost.channel.send(chr(keycode))将每个键码发送到服务器。但它仅适用于 1 字节键码。我想发送其他多字节键码,例如箭头键。我怎样才能实现这个目标?请帮我。


像 Windows 或 MacOS 这样的 GUI 使用“密钥代码”来标识密钥,但 SSH 管道仅传输字节,而不是密钥代码。

假设在服务器上的 ssh 内运行的程序是交互式的(也就是说,它期望有人使用它),您需要找出它期望接收哪种字节模式。当您打开频道时,请确保您正在拨打电话.get_pty()并给它一个终端参数(默认值,vt100,相当安全)。然后,您需要阅读 VT100 终端的文档,以了解按下各个按键时它发送的字节序列。我建议阅读Xterm 控制序列 http://www.xfree86.org/current/ctlseqs.html#PC-Style%20Function%20Keys文档(Xterm 严格来说不是一个 vt100 模拟器,但它的文档非常完整),并且不会与原始 VT100 终端的硬件细节混淆)。请注意,在该文档中,“CSI”实际上意味着 Python 字符串'\e['.

例如,Xterm Control Sequences 文档称箭头键为“CSI A”(向上)、“CSI B”(向下)、“CSI C”(向右)和“CSI D”(向左)。在 Python 中,它看起来像:

up = '\e[A'
down = '\e[B'
right = '\e[C'
left = '\e[D'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中使用paramiko库发送箭头键? 的相关文章

随机推荐

  • Hibernate:集合的集合

    这是我一直遇到的一个问题 我想让 hibernate 管理一个代表集合集合的表 例如 地图中的地图 套装清单 列表地图 例如 我希望能够表示这一点 class OwningClass Long entityId Map
  • 如何正确使用matchedGeometry?

    当我使用匹配的几何视图修改器时 我总是收到警告 Multiple inserted views in matched geometry group Pair
  • 获取文件夹的树形结构

    我的数据库中的 文件夹 表中有以下文件夹 Folder1 Folder2 Folder3 Folder4 文件夹的路径 Folder1 Folder2 Folder3 Folder4 当我单击Folder3时 我必须获取路径为 Folder
  • 使用通用 List 线程安全吗

    我有一个System Collections Generic List
  • 两个张量的双点积

    我有两个张量 A是二阶张量并且B是四阶张量 我知道当计算双点积 http en wikipedia org wiki Dyadics Product of dyadic and dyadic两个张量的结果张量的秩将减少两倍 因此在我的示例中
  • 我如何知道 .NET Standard 需要哪些平台扩展?

    我跑了 NET 可移植性分析器 https marketplace visualstudio com items itemName ConnieYau NETPortabilityAnalyzer针对我想从我自己的 NET Standard
  • 将徽章添加到选项卡

    如何向选项卡添加徽章 我正在使用这个代码 protected void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentView
  • 如何更改作为参数传递的变量的值?

    如何更改 C 中作为参数传递的变量的值 我试过这个 void foo char foo int baa if baa foo ab else foo cb 并致电 char x baa foo x 1 printf s n x 但它打印ba
  • 如何在 Netbeans 平台上获取项目类型?

    有没有办法知道所选项目的类型 我想根据项目类型 如 J2SE 项目 执行一些特定操作 以下是我发现的唯一方法 public final class MyAction extends CookieAction Override public
  • 如何从 JavaScript 中的 foreach 循环中删除特定数组元素

    var fruit apple pear pear pear banana 如何从该数组中删除所有 梨 水果 我尝试了以下方法 但仍然留下一个梨 for var f in fruit if fruit f pear fruit splice
  • 动态添加边缘 visjs

    谁能帮我在这个 visjs 网络中动态添加边 实际上 我正在尝试使用拖放将节点添加到画布 但是当我单击节点并将边缘动态添加到画布上现有的另一个节点时 我需要帮助添加边缘 您可以使用 vis js 的 更新 函数动态添加节点或边 您只需传入一
  • 禁用 WebAPI 的 Windows 身份验证

    我正在使用 MVC4 应用程序并使用 WebAPI 来获取 发送我的所有数据 在控制器中 我使用 HttpClient 请求来获取数据 一切正常 我面临的问题是 当在项目中启用 Windows 身份验证时 Web API 调用将返回 401
  • 如何解决错误: getSharedPreferences(String, int) 对于 new View.OnClickListener(){} 类型未定义

    我在编码中遇到此错误 但不完全确定如何解决此问题 我已经尝试尝试解决此问题 但似乎找不到任何有效的方法 我以前做过这个 但从来没有在片段中做过 所以也许是因为这个 我正在关注exception new View OnClickListene
  • 如何在无服务器框架中为多个 dynamodb 表定义 iamrolestatements 资源?

    我想在我的无服务器项目中使用多个 dynamodb 表 如何在 iamrolestatements 中正确定义多个资源 我有一个例子serverless yml service serverless expense tracker fram
  • 作为隐藏类加载时,Lambda 表达式和匿名类不起作用

    我正在尝试在运行时编译和加载动态生成的 Java 代码 由于 ClassLoader defineClass 和 Unsafe defineAnonymousClass 在这种情况下都有严重的缺点 我尝试使用隐藏类 https openjd
  • 壶 '?'不工作表输入步骤

    我想从数据库中获取所有表名 然后从表中获取所有行 所以我创建了这样的转换 获取表名称 添加数据库连接并将表名称存储在名为 tablename 的输出字段中 表输入 标记为 替换脚本中的变量 和 对每行执行 添加了 从步骤插入数据 中的第一步
  • Pickling cv2.KeyPoint 会导致 PicklingError

    我想搜索给定目录中所有图像中的冲浪并保存它们的关键点和描述符以供将来使用 我决定使用pickle 如下所示 usr bin env python import os import pickle import cv2 class Frame
  • 如何在 html 中使用纯 javascript 切换类

    我有一个 div 我想在悬停时切换它的类 这是我的代码 function a this classList toggle first this classList toggle sec document querySelector cont
  • 如何将 R 历史记录中指定行数保存到文件中?

    这有点令人沮丧 但我确信有一个简单的答案 history max show N 将在终端上显示 N 行历史记录 savehistory file 将根据某些环境变量将多行历史记录保存到文件中 我想做的是 savehistory file m
  • 如何在Python中使用paramiko库发送箭头键?

    我正在使用 python 2 7 和代码 ssh 客户端paramiko图书馆 我用myhost channel send chr keycode 将每个键码发送到服务器 但它仅适用于 1 字节键码 我想发送其他多字节键码 例如箭头键 我怎