2009-01-30 96 views
5

我有一个运行perforce操作的Perl应用程序,最后我希望它将结果上传到SharePoint网站。如何使用Perl将文档上传到SharePoint?

  • 什么是可以完成将文档添加到SharePoint的任务的最简单的Perl脚本?

该脚本需要在Solaris上运行并尽可能少地使用外部库(绝对是纯粹的经典Perl)在这些unix盒子上安装任何额外的东西都是一件痛苦的事情,并且必须由远程团队完成。

如果这可以很容易地用wget完成上传文件,那也是很有趣的。无论如何,我正在寻找1或一对易于理解的班轮。

最新通报基于评论:

  • Perl的机械化听起来是个好主意,但由于某些原因,我无法验证,错误歌厅http://sharepoint Unauthorized ....

我有这样的:

my $m = WWW::Mechanize->new(); 
$m->credentials($user => $pass); 
$m->get($url); 

但是由于某种原因,机械化不会针对sharepoint进行身份验证。

  • 有没有人有关于如何使用perl通过perix使用sharepoint webdav的链接或示例?

我安装并试图通过“dave”webdav浏览器打开my typical sharepoint site,但是我得到了** Unauthorized. **错误。

  • 如何用unix上的perl的webdav方法解决它?
+0

听起来就像是常见的问题是验证。你如何提供证书的网站? 您是否尝试过在身份验证关闭的网站上运行练习? – Nat 2009-01-31 20:03:03

回答

2

刚刚发现一个简单的方法在Windows上从perlmonks论坛:

http://www.perlmonks.org/?node_id=527182 
under Windows, you can access a sharepoint site via a UNC name. The URL: 
sharepoint.domain.dom/sites/Roboticus/Test 
is accessible via: 
\\sharepoint.domain.com\sites\Roboticus\Test 

只是增加的答案我自己,现在我得如何编写脚本这从Perl和是否找出有办法做同样的来自在UNIX上运行的脚本。

+0

是的,那就是WebDav界面。希望一个简单的文件副本只是“工作”。 – Nat 2009-02-03 23:35:32

1

您可以使用Webdav接口吗? 每个SharePoint列表都有一个与之关联的webdav文件夹。

+0

有没有人有关于如何使用perl通过unix的sharepoint webdav的链接或示例?我安装并尝试http://www.webdav.org/perldav尝试通过“dave”webdav浏览器打开我典型的SharePoint站点,但是我得到** Unauthorized。 **错误。任何人都有幸运? – 2009-01-30 23:24:24

6

这听起来像是一个工作WWW::Mechanize。它对处理表单有很好的支持。

+0

针对Web :: Mechanize的+1,它使屏幕刮擦变得轻而易举。 – 2009-01-30 12:58:17

+0

Mech听起来像一个好主意,但由于某种原因,我无法进行身份验证,错误获取http://共享点未授权.... 我有这样的: my $ m = WWW :: Mechanize-> new() ; $ m-> credentials($ user => $ pass); $ m-> get($ url); 任何想法,为什么这不会与SharePoint的共同点? – 2009-01-30 22:43:11

1

要在WWW NTLM身份验证工作::机械化,你需要使用这种格式

use URI; 
my $u = URI->new($url); 
my $host = $u->host; 
my $port = $u->port; 
my $hostport = "$host:$port"; 

$agent->$self->credentials($hostport, $realm, $user, $password); 
1

可以使用卷曲,这是能够连接到SharePoint(或任何网站)进行身份验证并进行谈判使用Kerberos/NTLM:

curl --ntlm -u domain/userid:passwd -T <file> "http://sharepoint URL" 
  • --ntlm 10 (HTTP)启用NTLM身份验证。 NTLM身份验证方法由Microsoft设计,并由IIS Web服务器使用。它是一个专有协议,由聪明人员反向设计,并根据他们的努力在curl中实施。这种行为不应该被认可,你应该鼓励所有使用NTLM的人转而采用公开的文件化身份验证方法,例如Digest。

    如果要为您的代理验证启用NTLM,请使用--proxy-ntlm。

    此选项需要使用SSL支持构建的库。使用-V,--version来查看你的curl是否支持NTLM。

    如果多次使用此选项,则只使用第一个选项。

  • -u,--user

    指定用于服务器认证的用户名和密码。覆盖-n,--netrc和--netrc-可选。

    如果您只是指定用户名,curl会提示输入密码。

    用户名和密码在第一个冒号中分开,这使得用户名中的冒号无法使用此选项。密码仍然可以。

    在基于Windows的服务器中使用Kerberos V5时,应在用户名中包含Windows域名,以便服务器成功获取Kerberos票据。如果您不这样做,那么初始身份验证握手可能会失败。

    使用NTLM时,如果在您的设置中存在单个域和林,例如,可以简单地将用户名指定为用户名,不带域。

    要指定域名,请使用Down-Level登录名或UPN(用户主体名称)格式。例如,分别为EXAMPLE \ user和[email protected]

    如果您使用支持Windows SSPI的curl二进制文件并执行Kerberos V5,Negotiate,NTLM或摘要式身份验证,那么您可以通过指定一个冒号来指定curl从您的环境中选择用户名和密码:“ -u:“。

    如果多次使用此选项,将使用最后一个。

  • -T,--upload文件

    此传输指定的本地文件到远程URL。如果指定的URL中没有文件部分,Curl将附加本地文件名。请注意,您必须在最后一个目录中使用尾部/以真正向Curl证明没有文件名,否则curl会认为您的上一个目录名是要使用的远程文件名。这很可能会导致上传操作失败。如果这用于HTTP(S)服务器,则将使用PUT命令。

    使用文件名“ - ”(一个破折号)来使用stdin而不是给定的文件。或者,文件名称“。” (单个周期)可以被指定而不是“ - ”在非阻塞模式下使用stdin以允许在stdin被上传时读取服务器输出。

    您可以在命令行上为每个URL指定一个-T。每个-T + URL对指定要上传的内容和位置。 curl还支持-T参数的“globbing”,这意味着您可以使用URL中支持的相同URL匹配样式将多个文件上传到单个URL,如下所示:

    curl -T“{file1,file2 }” http://www.uploadtothissite.com

    甚至

    卷曲-T “IMG [1-1000] .PNG” ftp://ftp.picturemania.com/upload/

相关问题