-1
SSH2를 사용하여 시스템에 명령을 보내기위한 Perl 스크립트를 만들고 있습니다. 이것은 표준 리눅스 쉘이 아니며 독점적 인 쉘입니다. 그것은 SSH 명령 ([email protected] 명령)을 통해 명령을 받아들이지 않지만 먼저 연결하여 쉘에 명령을 제공해야합니다.Perl Net :: SSH2가 채널()에서 멈 춥니 다.
나는 다음과 같은 스크립트를 내놓았다했습니다
#!/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()'행을 삭제하면 즉시 시작됩니다. 이 버그는 Net :: SSH2 모듈의 버그입니까? 아니면 내가 끔찍한 일을하고 있습니까?
글쎄,'auth_password'의 반환 값을 검사하여 실제로 인증했는지 확인할 수 있습니다 ... –
또한 $ ssh-> auth_keyboard ($ user, $ password)를 시도하거나 "can not connect $ @" ; –
Net :: SSH2의 버그 일 수 있습니다. 'connect' 또는'auth_password'가 실패하더라도 그것은'channel'에서 영원히 차단해서는 안됩니다. – salva