首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl中的Putty命令

Perl中的Putty命令
EN

Stack Overflow用户
提问于 2014-10-14 18:12:50
回答 2查看 2.9K关注 0票数 2

我正在尝试从perl中运行putty中的几个命令。现在,我的代码让我进入putty,但我不知道如何从那里执行命令。

代码语言:javascript
复制
my $PUTTY = 'C:\Users\Desktop\putty.exe';
my $dacPutty = "$PUTTY, -ssh username@server - l username -pw password";
system ($dacPutty);

system (ls);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-15 09:36:59

通常,在Perl中使用Perl模块比使用shell要好得多。

使用模块更便于移植,并且经常给您更多的控制。system为安全漏洞带来了许多机会,因此在可能的情况下避免它是很好的。

在本例中,使用Net::SSH::Perl http://search.cpan.org/~turnstep/Net-SSH-Perl-1.38/lib/Net/SSH/Perl.pm

一旦安装:

代码语言:javascript
复制
use Net::SSH::Perl;
my $ssh = Net::SSH::Perl->new("host1");
$ssh->login("user1", "pass1");

$ssh->cmd("cd /some/dir");
$ssh->cmd("foo");

为了提高可靠性,您应该实际检查每个cmd的结果:

代码语言:javascript
复制
my ($stdout, $stderr, $exit) = $ssh->cmd("cd /some/dir");
unless ($exit == 0) {
     // Handle failed cd
}

文档指出,使用SSH-1,每个cmd重新连接,所以上面的内容无法工作--您将在一个shell中使用cd,然后在一个全新的shell中重新连接foo。如果必须使用SSH-1,则需要执行以下操作:

代码语言:javascript
复制
$ssh->cmd("cd /some/dir; foo");

(即使您正在对plink进行system调用,也可以使用类似的技巧)

票数 1
EN

Stack Overflow用户

发布于 2014-10-14 18:25:55

用plink代替。( http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter7.html ) plink与putty位于同一个目录中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26367495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档