问题标签 [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 投票
4 回答
5105 浏览

python - Pexpect,运行 ssh-copy-id 在尝试生成第二个进程时挂起

我正在编写一个 Python 脚本,我需要在其中生成几个 ssh-copy-id 进程,并且它们需要我输入密码,所以我使用的是 PExpect。

我基本上有这个:

然后我想产生另一个进程,我不再关心这个了,不管它是否结束。

并且代码挂在第二个“spawn”

但是,如果我注释掉第一个电话,第二个电话有效,所以我猜测第一个电话仍在运行或某些东西使其无法正常工作。

现在,我无法做的另一件事是等到第一个停止。我试过:
child.close() - 它挂起(以 True 和 False 作为参数) child.read(-1) - 它挂起
child.expect(pexpect.EOF) - 它挂起。
child.terminate() - 它挂起(以 True 和 False 作为参数)

关于可能发生什么的任何想法?
注意:我不是 Python 专家,而且我以前从未使用过 pexpect,所以任何想法都非常受欢迎。

谢谢!


更新:这肯定与 ssh-copy-id 有关,因为对于其他进程,即使它们不返回,spawn 也能正常工作。此外,显然 ssh-copy-id 永远不会返回 EOF。

0 投票
2 回答
13171 浏览

python - python,在pexpect中设置终端类型

我有一个使用 pexpect 启动 CLI 程序的脚本。它的工作方式有点像一个 shell,你会得到一个提示,你可以在其中输入一些命令。

我认为,我遇到的问题是该程序使用了彩色提示。

这就是我所做的

这是输出:

由于某种原因,第一个提示颜色编码使事情变得混乱,并且第 8 行的 a.before 是乱码,正常打印不起作用,即使我看到第 5 行的命令实际上产生了很多输出。

有人知道问题可能是什么,或者是否可以设置终端类型以避免颜色?

我正在使用 tcsh 外壳

0 投票
4 回答
3821 浏览

python - 如何从 python 程序生成多个 python 脚本?

我想从我的程序中生成(fork?)多个 Python 脚本(也是用 Python 编写的)。

我的问题是我想为每个脚本指定一个终端,因为我将使用pexpect.

我试过使用pexpect, os.execlpos.forkpty但它们都没有按我的预期做。

我想生成子进程并忘记它们(它们将处理一些数据,将输出写入我可以读取的终端,pexpect然后退出)。

是否有任何图书馆/最佳实践/等。完成这项工作?

ps 在你问我为什么要写入 STDOUT 并从中读取之前,我要说我不写入 STDOUT,我读取了tshark.

0 投票
4 回答
19101 浏览

python - 如何从远程计算机获取控制台输出(ssh + python)

我用谷歌搜索了“python ssh”。有一个很棒的模块pexpect,可以使用 ssh(带密码)访问远程计算机。

远程电脑连接好后,我就可以执行其他命令了。但是我无法再次在 python 中得到结果。

在我的情况下如何得到结果ps -ef

0 投票
1 回答
2873 浏览

python - 将 ctrl+z 传递给 pexpect

如何使用 pexpect 模块将某个组合键传递给衍生/子进程?我正在使用 telnet 并且必须将 Ctrl+Z 传递给远程服务器。

肿瘤坏死因子

0 投票
2 回答
8527 浏览

python - 使用 pexpect 时如何显式设置终端大小

我有一个 ncurses 应用程序,它在启动时检查终端大小,如果不合适就立即退出。

在 Linux 中,默认大小为 80x24,此应用程序至少需要 25 个。修复很简单,我只是在运行 ncurses 应用程序之前调整终端仿真窗口(在 X 中)的大小。

我想用 pexpect 自动化 ncurses 应用程序,但我被卡住了,因为它认为终端尺寸小于通过 pexpect 启动时所需的尺寸,所以它不会运行。有什么方法可以在启动时用 pexpect 明确指定终端大小?

0 投票
3 回答
2613 浏览

python - pexpect 和“链式”函数调用的问题

下面的类旨在操作类似 cisco 的设备接口,以执行命令和更新配置元素。

按照目前的情况,我可以实例化类,调用ssh_to_aos_expsh函数并取回有效输出(例如,当命令为“show running-config”时获取配置)。但是,当我调用ssh_to_aos_config函数(调用ssh_to_aos_expsh函数)时,我得到一个 pexpect 超时错误。

我已经比较了 to 返回的 pexpect 对象( 和 中的“孩子” _ssh_connectssh_to_aos_expsh与tossh_to_aos_config返回的对象,它似乎位于相同的内存位置,所以我不清楚为什么我不能继续使用 pexpect 操作对象。_ssh_connectssh_to_aos_expshssh_to_aos_expshssh_toaos_config

我不是最复杂的 python 编码器,所以我可能在尝试在函数之间传递 pexpect 对象时犯了一些无意的错误,如果是这样,我会很感激有人指出我的错误。

0 投票
1 回答
916 浏览

router - pexpect 解析路由器输出

我有几条 pexpect 线路可以登录到 cisco 路由器,然后发出 show arp 命令。然后我退出路由器,将数据存储到变量 myARP (myARP=child.before)

然后,当我尝试遍历对象时(对于 myARP 中的行:print(lines),信息显示为每行 1 个字符
l
i
k
e



_
_

道歉,因为这可能是一个非常基本的问题,但是如果我手动发出命令,为什么我不能显示?它与 telnet 连接的流式传输特性有关吗?这个怎么解决???

0 投票
4 回答
75692 浏览

python - 用于 ssh 处理的 python 库

我将编写第一个用于在 python 上处理 ssh 命令的代码,我确实搜索了 stackoverflow,可以看到有几个 python 库可用于处理通过 ssh 传递的命令,例如paramikopexpect和其他一些。

特别是,我需要从远程服务器读取文件内容,通过 ssh/scp 复制文件,在远程服务器上启动脚本后从远程服务器获取输出。

也许一些专家可以建议哪个库更好并指定优点或缺点?

0 投票
2 回答
628 浏览

c++ - 在 Linux 上用 c++ 编写类似 pexpect 的程序

有没有办法像小程序一样编写pexpect,它可以启动一个进程并将密码传递给该进程?我不想安装和使用 pexpect python 库,但想知道它背后的逻辑,以便使用 linux 系统 apis 我可以构建类似的东西。