2010-04-28 3 views
1

Я использую следующий код для подключения к удаленному компьютеру и попытаюсь выполнить одну простую команду на удаленной машине.Как я могу запустить команду на удаленном компьютере с Perl?

#!/usr/bin/perl 
#use strict; 
use warnings; 
use Net::Telnet; 

$telnet = new Net::Telnet (Timeout=>2, Errmode=>'die'); 
$telnet->open('172.168.12.58'); 
$telnet->waitfor('/login:\s*/'); 
$telnet->print('admin'); 
$telnet->waitfor('/password:\s*/'); 
$telnet->print('Blue'); 

#$telnet->cmd('ver > C:\\log.txt'); 
$telnet->cmd('mkdir gy'); 

Но когда я этот скрипт этого метание сообщения об ошибках

[[email protected]]# perl tt.pl 
command timed-out at tt.pl line 12 
+1

Что OS вы используете? – Space

+0

Есть ли причина, по которой вы прокомментировали 'use strict;'? – Ether

ответ

5

Из кода, кажется, что у вас есть * Nix. Использование модуля PERL Net::SSH::Perl сделать его более легким

Пример кода:

#!/usr/bin/perl -w 
use strict; 
use Net::SSH::Perl 
my $cmd = 'command'; 
my $ssh = Net::SSH::Perl->new("hostname", debug=>0); 
$ssh->login("username","password"); 
my ($stdout,$stderr,$exit) = $ssh->cmd("$cmd"); 
print $stdout; 

И пример кода для Net :: Telnet

use Net::Telnet(); 
    my $t = new Net::Telnet (Timeout => 10, 
          Prompt => '/bash\$ $/'); 
    $t->open("sparky"); 
    $t->login($username, $passwd); 
    my @lines = $t->cmd("who"); 
    print @lines; 

Вы можете посмотреть на еще пример для Net Telnet Examples

0

Возможно, вам необходимо предоставить параметр «подсказка» конструктора - см. this thread

пример они дали:

my $telnet = new Net::Telnet (
    Timeout=>10, 
    Prompt=>'/Bilbo>$/i', #### <<<============== 
    Errmode=>'die', 
    Dump_Log=>'dump.txt', 
    Input_log=>'input.txt', 
    Output_log=>'output.txt', 
); 
Смежные вопросы