如何使用Perl将文档上载到SharePoint?

时间:2009-01-30 01:01:49

标签: perl sharepoint web-applications upload

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

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

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

如果可以使用wget轻松上传文档,那也会引起人们的兴趣。无论如何,我正在寻找一个或一对容易理解的衬垫。

根据评论更新:

  • Perl Mechanize听起来像个好主意,但由于某些原因我无法进行身份验证,错误获取http://sharepoint Unauthorized ....

我有这个:

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

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

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

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

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

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

刚从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上运行脚本。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

要在WWW :: Mechanize中进行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);

答案 4 :(得分:1)

您可以使用 curl 连接到SharePoint(或任何网站),它可以使用Kerberos / NTLM进行身份验证并执行协商:

curl --ntlm -u domain/userid:passwd -T <file> "http://sharepoint URL" 
  •   

    - NTLM
      (HTTP)启用NTLM身份验证。 NTLM身份验证方法由Microsoft设计,由IIS Web服务器使用。它是一个专有协议,由聪明人反向设计,并根据他们的努力实现卷曲。不应该认可这种行为,您应该鼓励使用NTLM的所有人切换到公共和记录的身份验证方法,例如Digest。

         

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

         

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

         

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

  •   

    -u, - user

         

    指定用于服务器身份验证的用户名和密码。覆盖-n, - netrc和--netrc-optional。

         

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

         

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

         

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

         

    使用NTLM时,如果您的设置中只有一个域和林,则可以将用户名简单地指定为没有域的用户名。

         

    要指定域名,请使用“低级别登录名”或“UPN(用户主要名称)”格式。例如,分别为EXAMPLE \ user和user@example.com。

         

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

         

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

  •   

    -T, - upload-file

         

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

         

    使用文件名&#34; - &#34; (单个破折号)使用stdin而不是给定文件。或者,文件名&#34;。&#34; (单个期间)可以指定而不是&#34; - &#34;在非阻塞模式下使用stdin以允许在上传stdin时读取服务器输出。

         

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

         

    curl -T&#34; {file1,file2}&#34; http://www.uploadtothissite.com

         

    甚至

         

    curl -T&#34; img [1-1000] .png&#34; ftp://ftp.picturemania.com/upload/