Perl 在SSH终端中执行的命令显示额外的行内容

Perl 在SSH终端中执行的命令显示额外的行内容,perl,ssh,Perl,Ssh,使用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 =&g

使用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->run_ssh() or die "SSH process couldn't start: $!";


$ssh->waitfor('password: ');

$ssh->send("password");

$ssh->exec("stty -echo");

my $hostname = $ssh->exec('hostname');
print "HOST:$hostname\n";

$ssh->close();
输出如下:

[vinod@deb-3-serv1 TEST_DIR]$ perl test_ssh.pl
HOST:deb-2-scripting
[user@deb-2-scripting(Host) ~]$
当我执行
test\u ssh.pl

主机:deb-2-scripting


最后一行不应该被打印出来,这显示在我上面的输出结果中。

no\u terminal=>1
选项传递给构造函数

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

这将阻止ssh服务器分配伪tty,并且远程shell在未在tty中运行时不应打印提示。

为什么在打印结束时有新行
\n
?我还有一些值要获取。因此,我提出了一条新的路线。