SOAPHandler perl脚本用于显示而不是复制

SOAPHandler perl脚本用于显示而不是复制,perl,Perl,我正在尝试将文件从linux服务器复制到sharepoint。我已经在sharepoint的显示器上建立了连接。有1个文件可供查看。但是我在副本上得到了一个401未经授权的。为什么我会在显示器上成功,而不是复制 #!/usr/bin/perl use Authen::NTLM qw(ntlmv2); use Data::Dumper; use SharePoint::SOAPHandler; use CopyTree::VendorProof; use CopyTree::VendorProo

我正在尝试将文件从linux服务器复制到sharepoint。我已经在sharepoint的显示器上建立了连接。有1个文件可供查看。但是我在副本上得到了一个
401未经授权的
。为什么我会在显示器上成功,而不是复制

#!/usr/bin/perl

use Authen::NTLM qw(ntlmv2);
use Data::Dumper;
use SharePoint::SOAPHandler;
use CopyTree::VendorProof;
use CopyTree::VendorProof::LocalFileOp;

delete $ENV{'https_proxy'};

my $sharepointobj = SharePoint::SOAPHandler ->new;
my $localfileobj = CopyTree::VendorProof::LocalFileOp ->new;

$sharepointobj->sp_creds_domain('operations.web.myworksite.com:443');
$sharepointobj->sp_creds_user('MYDOMAIN\myuserid');
$sharepointobj->sp_creds_password('Mypassword');
$sharepointobj->sp_authorizedroot('https://operations.web.myworksite.com:443/sites/CA...');

my $cpobj = CopyTree::VendorProof ->new;

print Dumper $sharepointobj->fdls('', 'Shared Documents');

$cpobj -> src('/opt/app/Reports/Excel/Reports_TABS1007.xlsx', $localfileobj);
$cpobj -> dst('Shared Documents/Reports_TABS1007.xlsx', $sharepointobj);
$cpobj -> cp;

print Dumper $sharepointobj->fdls('', 'Shared Documents');
答复:

$VAR1='shareddocuments/Reports_TABS1006.xlsx'
$VAR2='shareddocuments/Forms'
401未经授权,位于/opt/app/perl/lib/perl5/SharePoint/SOAPHandler.pm第374行。


所以我不知道你是否得到了答案,但是-

NTLM.pm中有一个bug。。。要修复此问题,请编辑NTLM.pm并查找以下行:

$domain = substr($challenge, $c_info->{domain}{offset}, $c_info->{domain}{len});
并将该代码替换为:

$domain = &unicode($domain);

“为什么我可以成功地显示而不是复制?”听起来您没有对目标的写入权限。我有写入权限,因为我可以将文件放置到sharepoint上。我在我的windows计算机上映射了sharepoint的一个驱动器,并具有写入权限。从1.04版的
Authen::NTLM
开始,您无需执行此操作,只需启用协议的v2:
使用Authen::HTML qw/ntlmv2/