问题标签 [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.
perl - 获取 Perl Expect 模块中通过 $self->send() 在远程主机上执行的命令的输出
我在 Perl 中使用 Expect 模块来执行交互式活动并在远程机器上执行命令。请求您的帮助
这是我使用的步骤
将用户切换到另一个帐户。发送密码登录。获得新用户的 shell 后,执行 ssh 命令以连接到远程计算机。
然后我想在那台远程机器上执行一个命令并得到它的响应。我能够在远程机器上执行命令。我也在我的终端上看到了输出。但我无法将它捕获到一个变量中,以便我可以将它与一个值进行比较。
我怎样才能得到$COMMAND1
我在远程机器上执行的结果$self->send("$COMMAND1\n")
?
perl - Perl:lib Net::SSH::Expect 中的裸词“exp_continue”
我是 Perl 的新手。我下载了该库Net::SSH::Expect
v.1.09
并尝试通过示例使用它。
当我尝试执行脚本时,我收到以下消息:
在 /hom/perl/Net/SSH/Expect.pm 第 203 行使用“strict subs”时,不允许使用裸词“exp_continue”。
bash - Perl 期望生成限制
对于性能问题和持续时间优化,我想知道谁限制了我的 SSH 连接数。
BASH 脚本正在调用 X perl 脚本。每个 perl 脚本都会生成一个指向不同 IP 的新 SSH 连接。
所以,这就是它的工作原理:
并且每一个 RTR-sshscript.pl 都会生成一个新的 Expect 并通过 SSH 连接发送大量命令,持续时间约为 3 分钟
因此,使用 max_proc_ssh=200我没有问题。脚本进展顺利。但是当我使用 max_proc_ssh=400时,Expect 模块无法处理它。它有时告诉我**unable to spawn**
,我会说,从预期的 400 开始,只有 350 真正开始,类似这样。
这有什么问题?我正在尝试定义一个子限制以避免同时启动 400 个期望,例如:
这将允许 SSH 启动 200 Expect,然后等待 3 秒,然后再次启动 200。然后,等待所有 400 完成后再重新开始。
编辑:如评论部分所述,我添加了“$!” 到错误消息,然后我有这个:
这意味着什么 ?我压倒了分叉限制?我怎样才能增加它?通过修改 sysctl.conf 文件?
当我自己搜索一点时,他们说检查什么
是说但是当我启动脚本时,它不会比这更高:
我的用户的 ulimit 是4096
但是当脚本启动时,计数器会比这高得多:
perl - 显示部分配置(--更多)
我制作了连接到我的交换机的脚本,但问题是当查看它时只显示部分内容,其余部分显示为大小(--更多)。我该怎么做才能查看所有配置,谢谢
我已经用 Expect 模块尝试过这个:
产生此错误:
无法在 /usr/local/share/perl5/Expect.pm 第 202 行 (#1) (F) 祝福非参考值 (F) 只能祝福硬引用。这就是 Perl 如何“强制”封装对象。参见 perlobj。用户代码中未捕获的异常:Can't bless non-reference value at /usr/local/share/perl5/Expect.pm line 202. at /usr/local/share/perl5/Expect.pm line 202. Expect::exp_init ("期待", "\x{d}\x{a}witch>enable\x{d}\x{a}密码:\x{d}\x{a}switch#show vlan\x{d} \x{a}\x{d}\x{a}VLA"...) 在 b.pl 第 19 行调用"
perl - 注销后 Perl 期望不起作用
连接服务器、运行一些命令、断开连接并在本地运行更多命令的非常简单的代码。
此代码在第一个exit
命令之前一直有效。它与服务器断开连接,但随后整个脚本似乎冻结了。没有执行其他命令,我必须 Ctrl+C 或等到它超时。
编辑:当我在本地执行命令时它工作,当我远程执行一些命令时它工作,然后我想回到本地工作,但我不能。
此外,我想对嵌套ssh
的 's 做同样的事情 - 连接到一台服务器,从它连接到另一台服务器等等......并处理所有这些。
我究竟做错了什么?我怎样才能实现所需的行为?
python - Perl ssh 密码
我正在尝试使用 perl 将 SSH 连接到机器并发出一些命令...
这是一般的想法,但我仍然被提示输入密码。我也尝试过使用python,也无法通过密码提示。另一方面,Expect 可以很好地处理密码。有谁知道会导致这种情况的原因是什么?
编辑:附加信息
我在一台 linux 机器上使用 putty,然后通过 ssh 连接到更多的 linux 机器上。使用上面的 perl 代码,用户名设置正确,但我最终不得不每次手动输入密码。
perl - 如何禁用通过 Expect.pm 接收的控制字符
我正在使用 Expect.pm 通过 SSH 连接到远程服务器。连接后,我通过 Expect 对象发送命令,并从远程服务器接收带有控制字符的答案:
所有这些控制字符都弄乱了我用 Expect 完成的模式匹配。我的问题是:如何避免在返回字符中看到这些控制字符?
perl - 在 Perl 中使用 Expect 获取生成会话的会话 ID
我正在使用Expect
ssh。我想知道生成会话的会话 ID。我怎么做?
这是我的代码:
perl - Perl Expect 使用 telnet 进行身份验证
我有一个使用 Expect 1.15 创建的活动 ssh 会话。在本次会议中,我执行以下命令进行第二级身份验证。不幸的是,我必须使用以@字符开头的奇怪密码(例如@johndoe)
我手动尝试并且登录成功,所以凭据是正确的。运行代码时它总是出错(登录不正确),所以我相信期望不会发送显示的密码而是另一个字符串。
我尝试了太多类型的插值,也用 ascii 代码插值了字符串。
任何人都知道@ 字符是否会导致已插值字符串中的插值错误?
我无法更改密码,否则我可以排除预期错误。
有高手能帮帮我吗?谢谢!
编辑。添加的日志
perl - 在 Perl 中使用 expect,如何使用 $object->expect() 方法添加忽略大小写的选项?
这是在 perldoc 中找到的示例:
我想在比赛中添加选项“i”。这不起作用:
我是否必须使用这种格式: