5

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

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

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

如果这可以使用 wget 轻松完成上传文档,那也很有趣。无论如何,我正在寻找易于理解的 1 或一对夫妇班轮。

基于评论的更新:

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

我有这个:

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

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

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

我安装并尝试通过“dave”webdav 浏览器打开我的典型共享点站点,但** Unauthorized. **出现错误。

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

5 回答 5

6

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

于 2009-01-30T01:17:17.227 回答
2

刚刚从 perlmonks 论坛在 windows 上找到了一个简单的方法:

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 上运行的脚本中执行相同的操作。

于 2009-02-02T22:57:36.947 回答
1

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

于 2009-01-30T01:16:24.390 回答
1

要使 NTLM 身份验证在 WWW::Mechanize 中工作,您需要使用此格式

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);
于 2009-12-20T14:47:50.593 回答
1

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

curl --ntlm -u domain/userid:passwd -T <file> "http://sharepoint URL" 
  • --ntlm
    (HTTP) 启用 NTLM 身份验证。NTLM 身份验证方法由 Microsoft 设计,供 IIS Web 服务器使用。它是一个专有协议,由聪明的人进行逆向工程,并根据他们的努力在 curl 中实现。这种行为不应该得到认可,您应该鼓励使用 NTLM 的每个人改用公共和记录的身份验证方法,例如 Digest。

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

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

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

  • -u,--用户

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

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

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

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

    使用 NTLM 时,可以将用户名简单地指定为用户名,而无需域,例如,如果您的设置中有单个域和林。

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

    如果您使用启用了 Windows SSPI 的 curl 二进制文件并执行 Kerberos V5、Negotiate、NTLM 或 Digest 身份验证,那么您可以通过使用此选项指定单个冒号来告诉 curl 从您的环境中选择用户名和密码:“-u :” .

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

  • -T,--上传文件

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

    使用文件名“-”(单破折号)来使用标准输入而不是给定文件。或者,文件名“。” (单个句点)可以指定而不是“-”以在非阻塞模式下使用标准输入,以允许在上传标准输入时读取服务器输出。

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

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

    甚至

    curl -T "img[1-1000].png" ftp://ftp.picturemania.com/upload/

于 2016-02-22T19:43:40.377 回答