perl - mover - sharepoint como repositorio de documentos
¿Cómo puedo subir un documento a SharePoint con Perl? (5)
¿Puedes usar la interfaz de Webdav ? Cada lista de SharePoint tiene una carpeta webdav asociada.
Tengo una aplicación Perl que ejecuta algunas operaciones forzadas, al final me gustaría cargar los resultados en el sitio web de SharePoint.
- ¿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 de bibliotecas externas posible (definitivamente Perl clásico puro) para obtener cualquier cosa adicional instalada en estos cuadros Unix es un problema y tendría que hacerlo el equipo remoto.
Si esto puede cargar un documento fácilmente puede hacerse 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 comentarios:
- Perl Mechanize sonaba como una buena idea, pero por alguna razón no puedo autenticar, Error GETing
http://sharepoint Unauthorized ....
Tenía esto:
my $m = WWW::Mechanize->new();
$m->credentials($user => $pass);
$m->get($url);
Pero mechanize no se autenticará contra sharepoint por alguna razón.
- ¿Alguien tiene un enlace o una muestra sobre cómo usar sharepoint webdav desde Unix a través de Perl?
Instalé y traté de abrir mi sitio sharepoint típico a través del navegador webdav "dave", pero obtengo ** Unauthorized. **
** Unauthorized. **
error
- ¿Cómo resolverlo con el enfoque webdav con Perl en Unix?
Esto suena como un trabajo para WWW :: Mechanize . Tiene un excelente soporte para tratar con formularios.
Acabo de encontrar una manera fácil en Windows desde el foro 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
simplemente agregando como respuesta a mí mismo, ahora tengo que encontrar la manera de guiar esto desde Perl y si hay alguna manera de hacer lo mismo desde el script que se ejecuta en Unix.
Para hacer que la autenticación NTLM funcione en WWW :: Mechanize, necesita usar 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);
Puede conectarse a SharePoint (oa cualquier sitio web) usando curl , que puede autenticar y realizar negociaciones 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, entonces use --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 usa la primera.
-u, --user
Especifique el nombre de usuario y la contraseña para usar para la autenticación del servidor. Anula -n, --netrc y --netrc-optional.
Si simplemente especifica el nombre de usuario, Curl 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 usar dos puntos en el nombre de usuario con esta opción. La contraseña puede, aún.
Al usar 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 se puede especificar simplemente como el nombre de usuario, sin el dominio, si hay un solo dominio y bosque en su configuración, por ejemplo.
Para especificar el nombre de dominio use 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-file
Esto transfiere el archivo local especificado a 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.
Use el nombre de archivo "-" (un solo guion) para usar stdin en lugar de un archivo dado. 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 el "globbing" del argumento -T, lo que significa que puede cargar varios archivos en una sola URL usando el mismo estilo globbing de URL admitido en la URL, como este:
curl -T "{archivo1, archivo2}" http://www.uploadtothissite.com
o incluso
curl -T "img [1-1000] .png" ftp://ftp.picturemania.com/upload/