我正在尝试从perl中运行putty中的几个命令。现在,我的代码让我进入putty,但我不知道如何从那里执行命令。
my $PUTTY = 'C:\Users\Desktop\putty.exe';
my $dacPutty = "$PUTTY, -ssh username@server - l username -pw password";
system ($dacPutty);
system (ls);发布于 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
一旦安装:
use Net::SSH::Perl;
my $ssh = Net::SSH::Perl->new("host1");
$ssh->login("user1", "pass1");
$ssh->cmd("cd /some/dir");
$ssh->cmd("foo");为了提高可靠性,您应该实际检查每个cmd的结果:
my ($stdout, $stderr, $exit) = $ssh->cmd("cd /some/dir");
unless ($exit == 0) {
// Handle failed cd
}文档指出,使用SSH-1,每个cmd重新连接,所以上面的内容无法工作--您将在一个shell中使用cd,然后在一个全新的shell中重新连接foo。如果必须使用SSH-1,则需要执行以下操作:
$ssh->cmd("cd /some/dir; foo");(即使您正在对plink进行system调用,也可以使用类似的技巧)
发布于 2014-10-14 18:25:55
用plink代替。( http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter7.html ) plink与putty位于同一个目录中。
https://stackoverflow.com/questions/26367495
复制相似问题