2010-04-28 148 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

什么操作系统您使用的? – Space 2010-04-28 06:08:53

+0

你有什么理由为什么你评论说'严格使用;'? – Ether 2010-04-28 16:24:58

回答

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; 

,把净示例代码::远程登录

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', 
); 
相关问题