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

python - 如何使用 Python 显示网页?

我想在 Python 中读取用户输入以获取 url(例如http://www.google.com),然后以 HTML 格式(仅文本)将网页打印到终端。我尝试使用pexpect.spawn('elinks')但 elinks 似乎没有写入标准输出。我还查看了 HTMLParser 模块,但我不知道如何将生成的文本格式化为类似于网页的内容。有什么建议吗?

0 投票
1 回答
2716 浏览

python - 使用 pexpect python 模块的 SFTP

我正在尝试使用 pexpect 模块对文件进行 SFTP。

看起来我能够通过 SSH 连接并获得身份验证,但 retval 始终为 1(退出状态)并且文件没有被 sftp 处理。

我在这里错过了什么吗?

如果我尝试等待 p (p.wait() 而不是 p.close()) - 它永远不会返回。

0 投票
1 回答
557 浏览

python - 如何使用 pexpect 从 unix 对话框中获取文本?

我在这里有一个 shell 脚本脚本,如下所示:

现在我的 py 文件是

这个脚本的输出是

从这里我会得到一些文本之间的文本。

但是如果我使用对话框

我得到了垃圾输出。

有没有办法从对话框中获取纯文本?

带有对话框的 Shell 脚本由第三方提供,因此我们无法更改脚本 :(。

请在不更改 shell 脚本的情况下提供解决方案。

0 投票
2 回答
1208 浏览

python - Python - Read in binary file over SSH

With Python, I need to read a file into a script similar to open(file,"rb"). However, the file is on a server that I can access through SSH. Any suggestions on how I can easily do this? I am trying to avoid paramiko and am using pexpect to log into the SSH server, so a method using pexpect would be ideal.

Thanks, Eric

0 投票
2 回答
5385 浏览

python - pexpect 和 ssh:如何在 su - root -c 之后格式化命令字符串

我正在尝试遍历服务器和密码列表以更改一组服务器上的 sshd 配置,以便我可以使用无密码 SSH 密钥通过 root 登录/运行命令。

我可以在 bash 中轻松做到这一点,但我正在尝试学习 Python,并且(显然)想放弃手动输入密码。

这是我想做的事情:

我已经接近用 pexpect 在 Python 中做到这一点:

当我运行 COMMAND1 (scp'ing) 工作正常。但 COMMAND2 失败:

如果我在运行脚本之前删除远程服务器上的 /etc/ssh/sshd_config 文件,我会得到:

我什至不确定如何调试它以查看它在哪里搞砸了。不过,我认为它没有正确解析 COMMAND2。对 Python 来说很新,所以任何建议都值得赞赏。谢谢。

0 投票
3 回答
4037 浏览

python - pexpect 不能传递超过 1024 个字符的输入?

我目前正在使用以下代码将一些输入传递给具有 pexpect 的进程:

当 INPUT_LEN < 1024 时,一切正常,但对于 >= 1024 个字符,该过程不会收到完整的输入,导致在 p.readline() 上引发“pexpect.TIMEOUT”错误。

我尝试将输入拆分为小于 1024 个字符的部分,但这有同样的问题:

有谁知道如何使 pexpect 使用超过 1024 个字符的输入?我尝试查看源代码,但它似乎只是在调用 os.write(...)。

(附带说明一下,当我从 shell 运行“cat”并尝试使用“Cmd+V”粘贴 >=1024 个字符时,我注意到同样的截断错误。但是,如果我运行“pbpaste”,一切正常| 猫”。)

谢谢!

更新: 调用“os.write()”返回1025,表示写入成功,但是os.read()返回“\x07”(单字符BEL),然后在下一次调用时挂起,导致超时.

将 os.write() 调用分成两个 1024 字节以下的 write(),由调用 os.fsync() 分隔,不会改变任何内容。

0 投票
1 回答
6994 浏览

python - Pexpect if else 语句

我正在尝试创建一个清除 ciscoasa bad xlate 的脚本。

要检查坏 xlate,我运行 sh xlate | 在 500 中,如果它得到回复,那么它应该发送一个明确的命令。如果我不这样做,ciscoasa 将不允许新的 vpn 隧道。

我需要有关 if else 语句的帮助。否则,脚本工作正常。这是我的代码:

0 投票
1 回答
1559 浏览

expect - 转义序列]0;

我目前正在尝试编写一个使用期望登录到 SSH 的脚本。[user@host]~/directory$当我使用 xterm 彩色终端时,每个提示都会登录到服务器。但是,如果我使用 expect 直接从 SSH 读取输出,我会看到以下内容<ESC>]0;user@host:~/directory[user@host]~/directory$。使用export PS1="#-->"将结果更改为<ESC>]0;user@host:~/directory#-->.

我的问题是:序列<ESC>]0;有什么作用?它属于哪一类终端?VT52 和 VT100 都找不到。

0 投票
2 回答
1099 浏览

python - 预期中的逻辑

您好我在 Python 中使用 pexpect 来读取 ssh 设备信息。

输入密码后,我显示了一些设备信息,在命令提示符下它会要求按任意键继续;一旦我按下任何键,信息就会消失。

我使用以下逻辑来捕获发出命令后的其他数据show version

那么如何捕获在输入密码后和按任意键继续使用“expObject”之前显示的数据。

0 投票
1 回答
587 浏览

python - 开发一个网页来运行 python 脚本

我正在尝试开发一个网页,使用户能够编写 python 代码,并在需要输入时运行该代码并能够与之交互。它实际上就像一个运行 python 代码的虚拟控制台。

我发现 pexpect 可以做到这一点,但在系统终端本地。我需要做的是使用 pexpect 功能来制作一个运行 python 代码的在线虚拟控制台。

我的想法是将 pexpect 运行的进程的缓冲区写入文件并运行另一个脚本,该脚本不断检查文件并显示其中的数据。但我认为这是一个非常糟糕的解决方案,并且在访问和将文件写入辅助存储器方面成本很高。

任何如何使用 pexpect 或其他方法来做到这一点的想法将不胜感激。

提前致谢。