You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Net::SSH::Expect中访问Expect对象报错,如何正确调用log_file?

解决Net::SSH::Expect中访问Expect对象log_file的错误问题

错误原因

你调用$m->expect->log_file()的方式有误:Net::SSH::Expect的expect()方法是用于等待匹配输出模式的实例方法,并非返回底层Expect对象的 getter 方法。直接不带参数调用$m->expect()会被解释为调用Expect类的expect()函数(而非实例方法),触发了你看到的参数错误。

正确调用方式

Net::SSH::Expect内部提供了_expect_handle()方法,用于获取底层的Expect对象实例,通过它就能正常调用log_file()方法获取文件句柄:

my $m = Net::SSH::Expect->new(
        host        => '192.168.1.6',
        user        => 'root',
        password    => 'password',
        timeout     => 10,
        raw_pty     => 1,
        log_file    => '/tmp/net_ssh_expect_output.txt',
    );

$m->login();

# 获取底层Expect对象
my $expect_obj = $m->_expect_handle();
# 调用log_file()获取文件句柄
my $log_fh = $expect_obj->log_file();

补充说明

  • _expect_handle()是Net::SSH::Expect的内部方法,专门用来暴露底层的Expect实例,供用户调用Expect类的原生方法。
  • 如果需要修改日志文件路径或关闭日志,也可以通过这个Expect对象调用log_file($new_path)或log_file(undef)来实现。

内容的提问来源于stack exchange,提问作者ZaPaDoS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:14:55