如何使用perl在远程计算机上运行命令?

问题描述:

我已经下载了所有下面运行所需的模块提到的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

您可以使用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