问题标签 [expect.pm]
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.
regex - 等待期望 - 直到生成的程序完成
我正在尝试使用 expect 在 perl 的自动化脚本中生成一个程序。
我正在尝试决定如何等待这个程序完成,因为 - 我不能依赖任何字符串匹配,因为程序与它的退出方式不一致 - 我想等到用户看到提示并且用户获得控制权。
是否有任何方法可以在不对用户提示执行正则表达式的情况下做到这一点?我可以依赖的任何标志或退出代码告诉用户现在可以控制。
谢谢
perl - Expect.pm send 修剪数字符号
我正在尝试在装有 perl 5.8.8 的旧机器上使用 Expect.pm。它可以工作,但是当我发送包含“#”符号的文本时,它会从文本中删除。有没有办法逃脱/保护它?
谢谢
抱歉更正它是 5.8.8
rec 是一个简单的 c 程序 chat 回显它接收到的用于调试目的的内容,并且只打印一些带走 # 的命令。我想要控制的实际程序需要#没有它我无法制作。
perl - Perl 期望模块无法理解
我是 Perl 的新手。我正在使用 Perl Expect 模块来自动化一个简单的程序,但输出不匹配。这是我想要自动化的 Perl 代码
这是我的 Expectfile 代码..
这是我得到的输出
我的名字再次出现在下一行,年龄输入根本没有显示。
新更新-->现在当我使用 soft_close 而不是 hard_close 时,我的年龄输入即将到来。但是,我的名字输入还是来了两次。admin3@admin3-VirtualBox:~/Desktop$ perl WelcomeExpect.pl
perl - 无法在远程机器上使用 Net::SSH::Expect 执行命令
我想建立远程连接并自动更改该远程机器中任何用户帐户的密码,所以我使用 Perl Net::SSH:: Expect 模块。我的连接正在发生,但我无法在远程机器上执行任何命令。我是 Perl 语言的新手,所以我的代码中可能存在一些错误。我曾尝试搜索此内容,但找不到与之相关的内容。
最初,我尝试结合使用 Net:: OpenSSH 和 Expect 模块,但无法实现用例。
这是我得到的输出
新更新
我尝试执行一个简单的命令来检查是否有任何命令正在执行。但是,我使用 send(passwd) 更改密码的用例不是。
这是我试图执行的新的简单命令
我从 send() 中删除了 die 的旧用例
现在输出是这样的
linux - Perl 期望代码不适用于设置密码
我正在使用 perl 希望在交互式程序中输入密码。Perl 正在输出正确的密码,但设置了其他密码。
我得到以下输出:
我根本不明白'Expect=GLOB(0x23ae188)'。我知道这个主机的密码是“p2c4f8j5”,这就是为什么我在确认密码期望代码中手动输入它的原因。知道我错过了什么吗?
perl - Perl 期望:对于 ssh 登录,如果一个错误的密码失败,如何尝试另一个密码?
在 Perl 中使用 Expect 自动 ssh 登录时,如果第一个密码失败,我们如何尝试另一个密码?
这样做并不难找到纯粹的 Expect 示例,但在 Perl 中找不到用于 Expect 的示例。
提前致谢!
linux - 在使用 perl 的 expect 发送命令之前,如何正确等待终端中的提示?
我对 Perl 和期望都很陌生,并且一直试图弄清楚如何在仅出现提示时发送命令。我知道在终端中显示某个输出后如何发送命令,但是当上一个命令没有特定的成功消息时找不到发送命令的正确方法,所以后面的唯一内容命令是提示符。我尝试使用的代码是:
$user. " @",$host代表终端中的提示符,但正如您可能猜到的那样,命令会不断发送,因为一旦发送命令,提示符就会再次出现,因此再次发送命令,所以程序陷入无限循环。我尝试将exp_continue更改为exit,但这意味着整个子程序由于某种原因停止工作。我还尝试将exp_continue更改为exp_continue_timeout并在子例程中添加 sleep 语句,但它并没有停止无限循环。
我也尝试过使用
但这只是在看似随机的时间发送命令,而不是等待前一个命令完成。这种方法是唯一可能的方法,还是有一种方法可以等待提示出现但只发送一次命令?