我正在创建一个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模块中的错误,还是我做错了什么?
答案 0 :(得分:0)
Per @ user1269955:我明白了。不得不用'auth_keyboard'替换'auth_password'进行键盘交互式登录。