2009-01-30 73 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/

相關問題