Perl 在SSH终端中执行的命令显示额外的行内容
使用Net::SSH::Expect perl模块,我尝试连接到服务器,连接成功。但当它在连接的服务器中执行命令并在当前窗口中显示输出时,它会显示额外的输出行 下面是我的代码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
#!/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
?我还有一些值要获取。因此,我提出了一条新的路线。