问题标签 [pexpect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
262 浏览

python - 是否可以在每个 STDERR 前面加上给定的字符串

我正在编写一个程序以通过串口与 linux 机器进行交互,并且我使用 pexpect.spawn 作为我的主要通信通道,如下所示:

我正在使用 sendline("cmd") 方法向机器发送命令,并在每个会话结束时解析日志文件以查看命令的行为方式。

我希望能够从我的日志文件中区分打印到 stdout 和 stderr 的行,但目前我无法做到这一点。这是一种使用给定字符串全局预先打印到 stderr 的每一行的方法吗?

0 投票
1 回答
684 浏览

python - paramiko 如何在流中搜索直到匹配模式

我想使用 paramiko 运行命令并在出现模式时退出。现在我使用pexpect.expect(..., pattern = [pattern1, pattern2,...])

有没有办法使用 paramiko?

0 投票
3 回答
1813 浏览

python - 如何匹配其中包含正则表达式的字符串?

假设我有一个字符串

我正在尝试匹配它"?and"。目前我正在这样做:

这是正确的用例re.escape吗?它是否可以与我正在寻找的任何其他字符串文字一起使用,其中可能包含其他类型的正则表达式语法?

我的用例是带有参数 in pexpect.spawn.expect(pattern),其中输入模式可以是编译成正则表达式的字符串类型。在某些情况下,我正在搜索的内容可能看起来像一个正则表达式,但它实际上是我想要匹配的字符串文字。

0 投票
1 回答
2094 浏览

python - 捕获 telnet 会话 - pexpect 和 telnetlib 太慢

我想从防火墙中提取连接表。在某些情况下,它可能超过 200k 行

“TCP 外部 46.33.77.20:53415 内部 10.16.25.63:80,空闲 0:00:04,字节 3230,标志 UIOB”

之类的。

我试图同时实现 pexpect 和 telnetlib 以获取这些表。不幸的是,超时和/或死亡都大于 40k。

期望实现:

telnetlib 实现:

有没有更强大的方法来获取这些信息?我用寻呼机值控制一次给定的行数(在运行它之前)。另外 - 我正在监控防火墙上的 cpu,所以我知道它正在显示连接。要么太多,要么太快,pexpect 或 telnetlib 跟不上。

谢谢。

0 投票
2 回答
1058 浏览

python - 使用 pexpect 自动化 manage.py syncdb 对话

我正在尝试使用 pexpect 来自动化这个对话。下面也是使用 pexpect 的 python 程序。当我运行代码时......它等待输入“你想现在创建一个吗?(是/否):”然后超时并出现错误。它期待是或否。所以……我哪里做错了?字符串匹配第一个输入?

Python脚本:

0 投票
1 回答
4093 浏览

shell - pexpect - 通过 ssh 运行 script.sh

我在通过 ssh 以编程方式运行本地脚本时遇到问题。
我不确定这是否是本地主机上的 shell 变量替换的问题。

手动运行时,

我得到了预期的输出,

CPU pctUser pctNice pctSystem pctIowait pctIdle
全部 11.21 0.00 1.50 0.31 86.98
0 0.00 0.00 0.00 0.00 100.00
1 3.00 0.00 1.00 0.00 96.00 ....

但我明白了

bash:/u02/splunk/splunk/etc/apps/Splunk_TA_nix/bin/cpu.sh:没有这样的文件或目录

运行以下代码时,

这些是打印输出,

/usr/bin/ssh monit@server1 'bash -s' < /u02/splunk/splunk/etc/apps/Splunk_TA_nix/bin/cpu.sh
初始 pexpect 命令输出:1
bash: /u02/splunk/splunk/etc/ apps/Splunk_TA_nix/bin/cpu.sh:没有这样的文件或目录

pexpect 撞到了 [pP] 密码行,所以我猜密码被正确传递了,

0 投票
2 回答
11344 浏览

python - Python pexpect 没有按预期工作

我正在尝试编写一个程序来运行一些带有模拟用户数据的 shell 命令。

问题是,如果代码末尾没有这一行,shell 命令将无法正确运行:

我怎样才能摆脱那条线?

0 投票
2 回答
27086 浏览

python - Python pexpect - TIMEOUT 进入回溯并退出

我是 python-pexpect 的新手。在 Tcl/expect 中,当我遇到超时时 - 我会回复消息并退出函数。我尝试使用发布的示例代码尝试类似的响应 http://pexpect.svn.sourceforge.net/viewvc/pexpect/trunk/pexpect/examples/sshls.py?revision=489&view=markup

我基于上面的这段代码——如果我提供了一个伪造的密码,我希望这只是超时,打印“错误!”,然后退出程序。但是当我运行它时 - 进入“回溯输出”(见下文),有人可以帮助我让程序打印“错误”并优雅地退出程序。

源代码:

0 投票
2 回答
1903 浏览

python - 是否有在 python3 中工作的“期望”或类似期望的库的实现?

我想在 python3 中使用类似期望的模块。据我所知,pexpect 和 fabric 都不适用于 python3。我可以使用任何类似的软件包吗?(如果没有,有谁知道 py3 支持是否在任何项目的路线图上?)

完全重叠的功能集不是必需的。我认为我的用例在这里没有必要,但我基本上是在重新实现一个 Linux 预期脚本,该脚本使用一些配置提供的命令执行 telnet,但扩展了功能。

0 投票
2 回答
3460 浏览

python - winpexpect 的行为不像 pexpect

我已经有这个问题好几天了,我不知道出了什么问题。

我有一个使用在 OSX 上运行的 pexpect 的简单 python 脚本,它启动 ssh-keygen 并自动点击返回以生成密钥对,它工作正常。我想在 Windows 上做同样的事情。为了在 Windows 上获取 ssh 和 ssh-keygen,我安装了 OpenSSH for Windows,它允许 ssh 从 cmd 提示符运行,作为使用部分 CYGWIN 支持文件的普通 Windows 程序。我将相同的脚本移植到 Windows 并将 pexpect 更改为 winpexpect 并使用对应的 winspawn 启动子进程,但它在第一个提示时停止。

我得到的输出是这样的:

在这里,它为所有收集数字灰尘的兔子提供了永恒的空间。

我也不明白为什么它在预期的冒号之后得到“:”。

是否有我可以使用的另一个模块可以让我更好地与 Windows 的 OpenSSH 进行通信?