2011-03-31 42 views
0

我想通過遠程程序運行一些命令。我已經嘗試使用下面的代碼。如何在標準的perl中執行遠程執行5.10.0

my $promt = '/bash\$ $/';  
use Net::Telnet(); 

$conn = new Net::Telnet (Timeout => 10, Prompt => $promt); 
$conn->open($host); 
$conn->login($username, $passwd); 
@lines = $conn->cmd("who"); 
print @lines; 

但它給錯誤, 不能在@INC定位網/ Telnet.pm .....

有沒有辦法做到不改變這個任務,將標準的Perl 5.10.0模塊?

+2

爲什麼不只是安裝Net :: Telnet? (請不要回復說您沒有root權限 - 您不需要它。請參閱perlmodinstall以獲取安裝您自己的模塊私人副本的詳細信息。) – 2011-03-31 05:51:32

+0

是Net :: Telnet軟件包是默認軟件包在Perl中?至少在最新版本中?手動添加軟件包不是解決方案,因爲不同的用戶將使用此遠程程序來訪問源程序。有沒有辦法自動化軟件包安裝,如果它不可用??? – DarRay 2011-03-31 06:17:39

回答

0

伊夫解決在使用該功能的問題...

# Get the needed values from the database 
sub Execute_Remote_Command($) { 
    print "sshpass -p $password ssh $user\@$host '$_[0]'\n"; 
    print `sshpass -p $password ssh $user\@$host '$_[0]'`; 
    print `exit`; 
} 

功能-Execute_Remote_Command-需要其需要的遠程計算機中運行的參數。

這裏唯一需要的附加要求是支持sshpass命令,它可以使用下面的url進行下載。 http://linux.softpedia.com/get/Security/Sshpass-8693.shtml

2

只需在自己的用戶路徑中安裝Net :: Telnet perl模塊。或者如果你沒有綁定到perl,我建議在遠程系統上運行命令的最佳方式是SSH。

$ssh [email protected] 'command' 

這會給你在標準輸出結果。

例子:

[email protected]:~ # ssh [email protected] 'who' 
brock pts/0 Oct 21 10:31 (75.72.194.149) 
jim pts/1 Oct 25 06:25 (128.101.163.128) 

您可以在 「Run Remote Command with SSH」 更多一些。

+0

可以請你給我一個例子.... – DarRay 2011-03-31 06:46:13

+0

再次看到我的答案。 – Space 2011-03-31 07:02:59