问题标签 [expect]

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 投票
6 回答
8800 浏览

bash - 如何通过 TCP 匹配模式?

我正在尝试编写监控脚本。它应该连接到我服务器上的某个端口,读取输出,如果输出是预期值,则打印 1,否则打印 0。

我正在研究一个涉及 的解决方案cat < /dev/tcp/hostname/port,但该解决方案让我望而却步。也许涉及期望的事情?我更喜欢 bash 脚本解决方案。帮助表示赞赏!

0 投票
3 回答
29575 浏览

tcl - 如何在 Expect 中保存和解析命令输出?

我在 Linux 服务器上编写了一个 Expect 脚本,该脚本应该远程登录到路由器以收集一些系统信息。到目前为止,我的脚本可以成功建立连接、运行路由器命令、断开连接并终止。

该命令显示了几行我需要解析的内容,我不确定如何在 Expect 中执行。如何保存输出,grep 一行,然后从行中提取一列,最后将结果保存在文件中?如果可能的话,我想完全使用 Expect 而不是变通方法(例如 Expect 嵌入在 Bash 中)。

谢谢你的时间。jk04

0 投票
2 回答
1161 浏览

testing - 用于二进制协议测试的类 Expect 工具

我想使用诸如Expect之类的东西为简单的面向字节的协议编写测试。测试脚本看起来像一个简单的流:

(将写入发送到标准输出并期望从标准输入读取足够多的内容,如果不匹配则退出。)

我不能使用 expect 本身,因为它是为缓冲的、面向行的交互而设计的。出于同样的原因,使用 grep 或 awk 进行模式匹配已失效。

有我可以使用的 UNIX 工具或库吗?如果它是标准的和可移植的,那就更好了,因为它需要与现有程序集成。

0 投票
1 回答
592 浏览

expect - ncurses - 期望:睡眠在错误的时间执行

我有一些需要自动化以重复测试的 ncurses 应用程序。我将“sleep”命令放在“send”命令之间。但是,我看到的是所有睡眠都是在屏幕加载之前开始执行的。期望连接发送(我在睡眠期间在屏幕底部看到)然后将它们一起发出。

我尝试使用“send -s”或“send -h”发送所有密钥。这有点帮助。我已将第 1 行的“-f”替换为“-b”——又是一个微小的差异。

为什么“睡眠”没有在正确的时间暂停。顺便说一句,我的程序有一个 getc() 循环,所以我不能使用“expect”命令。我也试过了。

0 投票
2 回答
892 浏览

networking - cygwin 的期望不适用于网络使用?

我需要在 cygwin 上自动执行“net use”命令。

命令是'net use /user:"name" \somewhere'。并且'输入'name'的密码以连接到'prosseek':'应输入密码。

它适用于命令行输入,以及在批处理文件中运行时。当我按如下方式制作期望脚本时它不起作用。

p>

我收到如下错误消息。

p>

  • 问:可能有什么问题?
  • 问:某些 MS 命令可以与 cygwin/expect 一起使用,例如“net use”吗?
0 投票
3 回答
6513 浏览

shell - 当界面要求输入密码时,如何使用 shell 脚本提供密码

我有一个脚本(dobrt),它在执行时要求输入密码。我如何编写一个执行dobrt并自动提供它要求的密码的脚本。

当我执行时 ./dobrt -p file.txt,系统要求输入密码。我希望脚本自动发送密码。这是输出

我为此尝试使用 shell 和 expecxt 脚本。这就是我所做的。

我有 2 个脚本。我从第一个脚本(run_dobrt.sh)调用第二个脚本(run_dobrt.exp)。

脚本 1:run_dobrt.sh

脚本 2:run_dobrt.exp

现在当我运行 run_dobrt.sh 我得到以下错误 run_dobrt.sh[20]: spawn: not found 如何摆脱这个错误并完成这个任务?请帮忙。

0 投票
2 回答
1417 浏览

java - 使用 GDB 编写测试 - 如何捕获输出?

我正在尝试编写与 GDB 交互但无法捕获输出的测试。我希望生成一个日志文件,如果手动执行测试,它看起来就像在终端中看到的那样。然而,在捕获其输出时,GDB 被证明是非常顽固的。

我已经能够编写能够与 GDB 交互并且其输出可以重定向到日志文件的 Expect 脚本,但我不想在 TCL 中编写我的测试。我希望使用与 Java 兼容的 Groovy。由于 Perl 的 Expect 和 ExpectJ 的某些原因,程序输出总是到终端并且不能被重定向到文件。

我尝试使用 ProcessBuilder 从 Java 启动 GDB 进程,它大部分都可以工作,但打印语句的输出永远不会出现在标准输出上,也无法被捕获。我想如果 Expect 有效,那么我会从 Java 启动 expect 并让它与 GDB 交互,但在这种情况下,大部分程序输出都会丢失,永远不会出现在创建进程的标准输出中。

所以我的问题是,如何在 Groovy 中编写一个测试(Java 也可以),它与 GDB 交互并可以捕获所有输出?

伪代码:

日志文件:

0 投票
3 回答
967 浏览

bash - bash命令在进程中重复模拟按键

nmap工具有这样一个功能 -当 您执行扫描 [#nmap -A -T4 localhost] 并按“Enter”时 - 它会显示一种状态信息“Timing: About 6.17% done”

问题 - 如何在不触摸 bourne shell 中的键盘的情况下强制此按键重复发生?

ps:只是想为php的proc_open函数中的一个bug找到一个解决方法,当一个进程的stdout只有在关闭stdout管道后才返回,而php的pty仿真在fbsd上不起作用。

问题关闭。使用“expect”实用程序解决的问题

0 投票
1 回答
1351 浏览

ftp - 工作多年的 Expect 脚本在新的 Expect 版本中表现异常

我最近从 FreeBSD 4.x 服务器迁移到 FreeBSD 8.0 服务器。我现在正在使用 expect-5.43.0_3。不记得旧版本的expect是什么,也无法快速查看,因为旧系统上的硬盘在完成迁移后几分钟内就崩溃了!(哇!)

无论如何,我有一个期望脚本,它创建一个压缩的 tar 文件并每晚通过 FTP 传输它。该脚本已成功运行了 YEARS。突然,自从迁移/升级以来,它就无法正常工作,我盯着它看了好几天,却无法修复它。我想确保每个 FTP 命令都已成功完成,然后再继续执行下一个命令,因为接下来的步骤包括删除远程服务器上选定的旧版本文件,如果传输是,我不想执行删除操作不能正常工作。

所以 - 这部分脚本仍然有效:

...

...这是与上述执行相对应的对话流:

(注意 - 哈希标记允许我使用低超时值并快速检测脚本是否挂起)

到目前为止,一切都很好!在过去的 6 年里,一切仍然正常工作,但下一行失败并显示“ftp unexpected prompt 2”,即使它正在寻找的字符串“\n226”在对话流中很明显

请注意,非常清楚的是,在“ftp>”之前的对话流中有一个“\n226”,但我一直得到“ftp unexpected prompt 2”。我尝试将其更改为“转移”或“完成”,但它仍然具有相同的效果。现在,我在没有检查是否成功完成的情况下运行脚本,但很明显,我对此并不满意,这是一个等待发生的意外,因为以下步骤删除了选定的旧文件,我不想这样做如果这些文件没有成功传输,我目前没有哪个测试。

我认为输入流缓冲/处理发生了一些变化,我需要改变它,以便它在“看到”“ftp>”字符串之前“看到”“\n226”或“传输”或“完成” , 但为什么?而且,就此而言,如何?:)

0 投票
3 回答
1019 浏览

tcl - 如何自动化测试基于文本的菜单

我有一个在远程 Linux 主机上运行的基于文本的菜单。我正在使用期望 ssh 进入该主机,并想弄清楚如何与菜单交互。交互包括向上、向下箭头以及使用回车键和回车键。例如,

当您进入系统时,断开连接被突出显示。因此,只需按两次 enter 即可断开与系统的连接。第二次进入确认断开连接。

以下代码将 ssh 进入我的系统并调出菜单。如果我删除期望 eof 并尝试发送“\r”,认为这会选择“断开连接”菜单选项,我会收到以下错误:“write() 无法写入任何内容 - 将 sleep(1) 并重试...”

我查看了 virterm 和 term_expect 示例,但无法弄清楚如何调整它们以适合我。如果有人能指出我正确的方向,我将不胜感激。我需要知道的是我可以与基于文本的菜单系统进行交互吗?这样做的正确方法是什么,如果有的话,例子会很棒。

谢谢,-里根