Perl Net :: SSH2挂在channel()

时间:2012-03-28 18:04:06

标签: perl ssh

我正在创建一个Perl脚本,使用SSH2将命令发送到系统。它不是标准的Linux shell,而是一个专有的shell。它不接受通过SSH命令(user@192.168.1.2命令)的命令,但它需要先连接然后像shell一样给它命令。

我想出了以下脚本:

#!/usr/bin/perl

use Net::SSH2;

my $host = "192.168.1.2";
my $user = "admin";
my $password = "";

#-- set up a new connection
my $ssh = Net::SSH2->new();
$ssh->connect($host);

#-- authenticate
$ssh->auth_password($user, $password);

#-- creating a channel
my $channel = $ssh->channel();

#-- running a command
$channel->exec("xstatus");

#-- Closing the connection
$channel->close;
$ssh->disconnect;

然而问题是它挂在'$ ssh-> channel()'行。有一个等待的提示,不会消失。我试图删除它下面的所有行,但问题仍然存在。当我删除'channel()'行时,它会立即启动。这是Net :: SSH2模块中的错误,还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

Per @ user1269955:我明白了。不得不用'auth_keyboard'替换'auth_password'进行键盘交互式登录。