2012-04-13 201 views
2

我已經下載了所有下面運行所需的模塊提到的Perl腳本:如何使用perl在遠程計算機上運行命令?

use Net::SSH::Perl; 

my $host = "172.16.170.116"; 
my $user = "HGamit"; 
my $password = ""; 

#-- set up a new connection 
my $ssh = Net::SSH::Perl->new($host); 
#-- authenticate 
$ssh->login($user, $pass); 
#-- execute the command 
my($stdout, $stderr, $exit) = $ssh->cmd("perl C:/Monitor/ltp.pl C:/monitor"); 

但錯誤是:無法連接到172.16.170.116,端口22:無連接可以作出,因爲目標機器積極拒絕了。在C:/Perl/site/lib/Net/SSH/Perl.pm線206. 然後我嘗試telnet,但它不工作。

use warnings; 
use Net::Telnet; 

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

#$telnet->cmd('ver > C:\\log.txt'); 
$telnet->cmd('perl C:/Monitor/ltp.pl C:/monitor'); 

任何人都可以提供一些解決方案來解決這個問題嗎?

+7

腳本,你應該檢查實際上,可以使用SSH或telnet連接之前。檢查目標機器上的防火牆和服務。你能夠telnet到端口22嗎? (使用標準的telnet應用程序) – Matteo 2012-04-13 09:49:47

+1

看起來像是一個防火牆問題,或SSH守護進程根本不在遠程計算機上運行... – eckes 2012-04-13 10:45:46

回答

0

您可以使用IO :: Socket編寫客戶端服務器程序。您也可以實施加密和用戶驗證。該模型爲您提供發送命令的控制權,並在完成執行時將數據返回給客戶端。您可以通過修改服務器程序中的繼承PATH變量來限制要在服務器上執行的命令的數量,以提高安全性。 如果您需要幫助代碼。我可以爲你發佈我的代碼。

謝謝

薩克伯Dhillon

Addteq

+0

HEy Sukhbir,我想打開遠程文本,使用Perl的XML文件,並解析和更新該文件以進行更新。 – Hmnshu 2012-09-18 13:43:56

+0

HEy Sukhbir,我想打開遠程文本,使用Perl的XML文件,並解析該文件進行更新。示例:遠程服務器名稱:incdforty,IP:172.16.23.110,用戶名:「myname」pwd:「psswrd」.....文件位置可能有所不同。我想在兩個不同的遠程服務器上比較和合並文件,例如: - 文件1內容 - :key = abc2000,2003和文件2 content-:key = 2005,我只是想用我的第二個文件的內容更新第一個文件本地機器到其他兩臺遠程服務器,我擁有管理員證書......如果你能給我片段或指導這個任務,那將是非常有幫助的。 – Hmnshu 2012-09-18 13:50:16

相關問題