PERL Win32 :: NetResource :: AddConnection在用作子

时间:2016-12-06 13:04:23

标签: perl

我使用Perl脚本连接到多个服务器。为了测试脚本,我尝试仅使用连接过程执行.pl文件:

#!/usr/bin/perl

use strict;
use Win32::NetResource;

my $acs = 'zeus';
my $sharename="P:";
my $RemoteShare = {
                 'LocalName' => "$sharename",
                 'RemoteName' => "\\\\$acs\\c\$\\scratch",
                };
my $user = "Administrator";
my $pw = "1234";
my $share = "\\\\$acs\\c\$\\scratch";
print $share;
my $Connection = 0;
Win32::NetResource::AddConnection($RemoteShare,$pw,$user,$Connection);

opendir(in, $share) or print "No Connection!";

它工作得非常好。网络驱动器已映射,我可以看到所有文件。但是,只要我在主程序的sub中使用完全相同的代码,它就不再起作用了。 $ share变量仍然包含正确的路径,但网络驱动器不再被映射。

这里有一些来自我的主脚本的代码片段,它与HTML一起使用:

use strict;
use Win32::NetResource;

my $sharename="P:";
my $share = "\\\\$acs\\c\$\\scratch";
my $anzahl = $q->param('anzahl');
my $acs = $q->param('acs');

unless (defined($acs)){

&showCGI();
exit 0;

} else {

&showCGI();
&connect($acs);
&getComFile();
exit 0;
}

sub showCGI(){

print $q->header;
print "<link href=\"path/css/Scripts.css\" rel=\"stylesheet\">\n";
print $q->start_html(
-title => "Text",);
print $q->h3("Text");
print '<hr>';
print $q->start_multipart_form(
-name=> 'par');
print "<table>\n";
print "<tbody>\n";
print "<tr>\n";
print '<th align="left">Server:</th>';
print '<th align="left">Text to show from file:</th>';
print '<th></th>';
print '</tr>';
print '<tr>';
print '<td>';
print $q->textfield(-name=>'acs',
    -size=>20,
    -id=>'acs');
print '</td>';
print '<td>';
print $q->textfield(-name=>'anzahl',
    -size=>20,
    -value=>10,
    -id=>'anzahl');
print '</td>';
print '<td>';
print $q->submit(-value => 'Send Data');
print '</td></tr></tbody></table>';
print $q->hr;
print $q->end_form;
}

sub connect(){

my $RemoteShare = {
                 'LocalName' => "$sharename",
                 'RemoteName' => "\\\\$acs\\c\$\\scratch",
                };
my $user = "Administrator";
my $pw = "1234";
my $Connection = 0;
Win32::NetResource::AddConnection($RemoteShare,$pw,$user,$Connection);
}

sub getComFile(){

  print $share;
  opendir(in, $share) or print "<br>No Connection!<br><hr>";
  #afterwards the file gets further processed

使用这种方法,我会收到一个&#34;无连接&#34;消息和程序停止。这可能是什么问题?

修改

根据choroba的建议,我尝试使用管理员帐户在服务器上执行脚本。我可以映射驱动器,但它会立即再次断开连接。现在我有一个&#34;断开的网络驱动器&#34;在我的探险家,我无法访问。它说&#34;位置不可用。用户名或密码不正确&#34;。

0 个答案:

没有答案