2009-01-30 16 views
5

Tengo una aplicación Perl que ejecuta algunas operaciones obligatorias, al final me gustaría que cargue los resultados en el sitio web de SharePoint.¿Cómo puedo cargar un documento a SharePoint con Perl?

  • ¿Cuál es la secuencia de comandos de Perl más simple que puede realizar la tarea de agregar un documento a SharePoint?

El script necesitaría ejecutarse en Solaris y usar el menor número posible de bibliotecas externas (definitivamente puro Perl clásico) obtener algo adicional instalado en estos cuadros UNIX es un problema y tendría que hacerlo el equipo remoto .

Si esto puede cargar un documento fácilmente se puede hacer con wget, eso también sería de interés. De todos modos, estoy buscando 1 o un forro de línea que sea fácil de entender.

actualizaciones basadas en los comentarios:

  • Perl Mechanize sonaba como una buena idea, pero por alguna razón no soy capaz de autenticar, error Consiguiendo http://sharepoint Unauthorized ....

Tenía esta:

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

Pero mechanize no se autenticará contra sharepoint por algún motivo.

  • ¿Alguien tiene un enlace o una muestra sobre cómo usar sharepoint webdav desde Unix a través de perl?

I instalado y probado para abrir my typical sharepoint site a través de "Dave" webdav navegador, pero me da ** Unauthorized. ** error.

  • ¿Cómo resolverlo con el enfoque webdav con perl en Unix?
+0

Suena como el problema común es la autenticación. ¿Cómo está proporcionando credenciales para el sitio? ¿Has probado una práctica en un sitio con la autenticación desactivada? – Nat

Respuesta

2

acaba de encontrar una manera fácil en las ventanas de perlmonks foro:

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 

sólo añadir como respuesta a mí mismo, ahora tengo que encontrar la manera de guión esto desde Perl y si hay manera de hacer lo mismo desde la secuencia de comandos que se ejecuta en Unix.

+0

Sí, esa es la interfaz WebDav. Esperemos que una simple copia de archivo simplemente "funcione". – Nat

1

¿Se puede utilizar la interfaz Webdav? Cada lista de SharePoint tiene una carpeta webdav asociada.

+0

¿Alguien tiene un enlace o una muestra sobre cómo usar sharepoint webdav desde Unix a través de perl? Instalé y probé http://www.webdav.org/perldav intenté abrir mi sitio sharepoint típico a través del navegador webdav "dave", pero recibí ** No autorizado. ** error ¿Alguien tiene suerte con esto? –

6

Esto suena como un trabajo para WWW::Mechanize. Tiene un excelente soporte para tratar con formularios.

+0

+1 para Web :: Mechanize, hace que raspar la pantalla sea muy fácil. –

+0

Mech sonaba como una buena idea, pero por alguna razón no puedo autenticar, Error GETing http: // sharepoint no autorizado .... Tuve esto: mi $ m = WWW :: Mechanize-> new() ; $ m-> credenciales ($ usuario => $ pase); $ m-> get ($ url); ¿Alguna idea de por qué esto no funciona con Sharepoint? –

1

Para poner en funcionamiento la autenticación NTLM en WWW :: Mecanizar es necesario utilizar este formato

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

Puede conectarse a SharePoint (o cualquier sitio web) usando rizo, que es capaz de autenticar y llevar a cabo la negociación con Kerberos/NTLM:

curl --ntlm -u domain/userid:passwd -T <file> "http://sharepoint URL" 
  • --ntlm
    (HTTP) Habilita la autenticación NTLM. El método de autenticación NTLM fue diseñado por Microsoft y es utilizado por los servidores web IIS. Es un protocolo patentado, diseñado por ingeniería inversa por personas inteligentes e implementado en curl en función de sus esfuerzos. Este tipo de comportamiento no debe respaldarse, debe alentar a todos los que usan NTLM a cambiar a un método de autenticación público y documentado, como Digest.

    Si desea habilitar NTLM para su autenticación de proxy, utilice --proxy-ntlm.

    Esta opción requiere una biblioteca construida con soporte SSL. Use -V, --version para ver si su curl admite NTLM.

    Si esta opción se usa varias veces, solo se utiliza la primera.

  • -u, --user

    especificar el nombre de usuario y la contraseña para la autenticación del servidor. Anula -n, --netrc y --netrc-optional.

    Si simplemente especifica el nombre de usuario, Curl le solicitará una contraseña.

    El nombre de usuario y las contraseñas se dividen en los primeros dos puntos, lo que hace que sea imposible utilizar dos puntos en el nombre de usuario con esta opción. La contraseña puede, aún.

    Al utilizar Kerberos V5 con un servidor basado en Windows, debe incluir el nombre de dominio de Windows en el nombre de usuario, para que el servidor obtenga correctamente un Ticket de Kerberos. Si no lo hace, el protocolo de autenticación inicial puede fallar.

    Al usar NTLM, el nombre de usuario puede especificarse simplemente como el nombre de usuario, sin el dominio, si hay un único dominio y bosque en su configuración, por ejemplo.

    Para especificar el nombre de dominio, utilice los nombres de nombre de inicio de sesión descendente o UPN (nombre principal del usuario). Por ejemplo, EJEMPLO \ usuario y [email protected] respectivamente.

    Si usa un binario curl compatible con SSPI de Windows y realiza Kerberos V5, Negociar, NTLM o Autenticación implícita, puede indicar a curl que seleccione el nombre de usuario y la contraseña de su entorno especificando un solo punto con esta opción: " -u: ".

    Si esta opción se usa varias veces, se usará la última.

  • -T, --upload-archivo

    Esto transfiere el archivo local especificado en la URL remota.Si no hay un archivo en la URL especificada, Curl agregará el nombre del archivo local. TEN EN CUENTA que debes usar un seguimiento/en el último directorio para demostrar realmente a Curl que no hay un nombre de archivo o curl pensará que tu último nombre de directorio es el nombre de archivo remoto que se usará. Eso probablemente hará que la operación de carga falle. Si esto se usa en un servidor HTTP (S), se usará el comando PUT.

    Utilice el nombre de archivo "-" (un solo guion) para usar stdin en lugar de un archivo determinado. Alternativamente, el nombre del archivo "." (un único período) puede especificarse en lugar de "-" para usar stdin en modo no bloqueante para permitir la lectura de salida del servidor mientras se está cargando stdin.

    Puede especificar una -T para cada URL en la línea de comando. Cada par de URL -T + especifica qué cargar y dónde. curl también admite "globbing" del argumento -T, lo que significa que puede cargar varios archivos en una sola URL utilizando el mismo estilo de URL globbing admitido en la URL, como este:

    curl -T "{archivo1, archivo2 }" http://www.uploadtothissite.com

    o incluso

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

+0

La pregunta pide "Perl" y ya tiene varias respuestas. Además, anteponer una respuesta con "Simple" no parece muy motivador. –

Cuestiones relacionadas