【问题标题】:Connecting to server using Net::SSH::Expect status使用 Net::SSH::Expect 状态连接到服务器
【发布时间】:2019-12-24 19:36:40
【问题描述】:

使用 Net::SSH::Expect Perl 模块我想连接到服务器。

下面是我的代码

#!/usr/bin/perl 

use Net::SSH::Expect;

my $ssh = Net::SSH::Expect->new (
    host => 'hostip', #deb-2-scripting ip
    user => 'user',
    password => 'password',
    raw_pty => 1
);

..
..
..
$ssh->close();

创建 $ssh 对象后,我想检查与 SSH 的连接是否成功。

如何做到这一点? Net::SSH::Expect 中是否有任何方法可以在连接成功或失败时返回布尔值。

【问题讨论】:

    标签: perl ssh


    【解决方案1】:

    如果您查看Net::SSH::Expect::new() 的源代码,您会发现它实际上并没有创建连接。它只是创建一个具有所有相关属性的对象,以便在将来需要时建立连接。

    实际连接是在调用login() 方法时建立的。该文档包含一个如何检查是否成功的示例。

    # 2) logon to the SSH server using those credentials.
    # test the login output to make sure we had success
    my $login_output = $ssh->login();
    if ($login_output !~ /Welcome/) {
        die "Login has failed. Login output was $login_output";
    }
    

    【讨论】:

    • 如果我使用上述条件,我不会在$login_output 变量中获得任何值。因为我在创建$ssh 对象时创建了no_terminal => 1,。因为我不想在我的输出窗口 (stackoverflow.com/questions/57511768) 中打印任何内容。如果我做到no_terminal => 0,,我将获得$login_output 上的值。但是我之前问的问题不会满足。
    猜你喜欢
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 2012-10-29
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多