Как я могу загрузить документ в SharePoint с помощью Perl? - PullRequest
5 голосов
/ 30 января 2009

У меня есть приложение Perl, которое выполняет некоторые операции выполнения, в конце я хотел бы, чтобы оно загружало результаты на сайт SharePoint.

  • Какой самый простой Perl-скрипт, который может выполнить задачу добавления документа в SharePoint?

Сценарий должен быть запущен в Solaris и использовать как можно меньше внешних библиотек (определенно чисто классического Perl), чтобы установить что-либо дополнительное на эти Unix-блоки - это трудная задача, и это должно сделать удаленная команда. *

Если это можно легко загрузить с помощью wget, это также будет интересно. В любом случае, я ищу 1 или пару лайнеров, которые легко понять.

ОБНОВЛЕНИЯ на основе комментариев:

  • Perl Mechanize звучит как хорошая идея, но по какой-то причине я не могу пройти проверку подлинности, ошибка GETing http://sharepoint Unauthorized ....

У меня было это:

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

Но по какой-то причине механизация не аутентифицируется на sharepoint.

  • У кого-нибудь есть ссылка или пример, как использовать sharepoint webdav из unix через perl?

Я установил и попытался открыть мой типичный сайт sharepoint через веб-браузер dave, но я получаю ошибку ** Unauthorized. **.

  • Как решить эту проблему с помощью подхода webdav с помощью perl на unix?

Ответы [ 5 ]

6 голосов
/ 30 января 2009

Это звучит как работа для WWW :: Mechanize . Имеет отличную поддержку для работы с формами.

2 голосов
/ 03 февраля 2009

Только что нашел простой способ на 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.

1 голос
/ 22 февраля 2016

Вы можете подключиться к SharePoint (или любому веб-сайту), используя curl , который может аутентифицировать и выполнять согласование с Kerberos / NTLM:

curl --ntlm -u domain/userid:passwd -T <file> "http://sharepoint URL" 
  • - NTLM
    (HTTP) Включает проверку подлинности NTLM. Метод аутентификации NTLM был разработан Microsoft и используется веб-серверами IIS. Это запатентованный протокол, который был разработан умными людьми и реализован в соответствии с их усилиями. Такое поведение не следует одобрять, вы должны поощрять всех, кто использует NTLM, вместо этого переходить на общедоступный и документированный метод аутентификации, такой как Digest.

    Если вы хотите включить NTLM для проверки подлинности прокси, используйте --proxy-ntlm.

    Для этого параметра требуется библиотека, созданная с поддержкой SSL. Используйте -V, --version, чтобы увидеть, поддерживает ли ваш curl NTLM.

    Если эта опция используется несколько раз, используется только первая.

  • -u, --user

    Укажите имя пользователя и пароль, которые будут использоваться для аутентификации сервера. Переопределяет -n, --netrc и --netrc-необязательно.

    Если вы просто укажете имя пользователя, curl запросит пароль.

    Имя пользователя и пароли разделены на первое двоеточие, что делает невозможным использование двоеточия в имени пользователя с этой опцией. Может, пароль еще.

    При использовании Kerberos V5 с сервером под управлением Windows вы должны включить имя домена Windows в имя пользователя, чтобы сервер успешно получил билет Kerberos. Если вы этого не сделаете, первоначальное подтверждение аутентификации может завершиться неудачей.

    При использовании NTLM имя пользователя может быть указано просто как имя пользователя, без домена, если в вашей настройке есть, например, один домен и лес.

    Чтобы указать имя домена, используйте форматы для входа в систему на более низком уровне или UPN (основное имя пользователя). Например, EXAMPLE \ user и user@example.com соответственно.

    Если вы используете двоичный файл curl с поддержкой Windows SSPI и выполняете аутентификацию Kerberos V5, Negotiate, NTLM или Digest, то вы можете указать curl выбрать имя пользователя и пароль из вашей среды, указав один двоеточие с этой опцией: "- u: ".

    Если эта опция используется несколько раз, будет использоваться последняя.

  • -T, --upload-file

    Это передает указанный локальный файл на удаленный URL. Если в указанном URL нет файловой части, Curl добавит локальное имя файла. Обратите внимание, что вы должны использовать конечный / последний каталог, чтобы действительно доказать Curl, что имя файла отсутствует, или curl подумает, что ваше последнее имя каталога - это имя удаленного файла для использования. Это, скорее всего, приведет к сбою операции загрузки. Если это используется на сервере HTTP (S), будет использоваться команда PUT.

    Используйте имя файла "-" (один дефис), чтобы использовать stdin вместо заданного файла. Альтернативно, имя файла "." (один период) может быть указан вместо «-» для использования stdin в неблокирующем режиме, чтобы разрешить чтение вывода с сервера во время загрузки stdin.

    Вы можете указать один -T для каждого URL в командной строке. Каждая пара -T + URL указывает, что загружать и куда. curl также поддерживает «подстановку» аргумента -T, что означает, что вы можете загрузить несколько файлов на один URL-адрес, используя тот же стиль подстановки URL-адреса, поддерживаемый в URL-адресе, например:

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

    или даже

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

1 голос
/ 20 декабря 2009

Чтобы аутентификация 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);
1 голос
/ 30 января 2009

Можете ли вы использовать Webdav интерфейс? С каждым списком SharePoint связана папка webdav.

...