Pregunta

Necesito una utilidad de línea de comandos que pueda realizar la carga de WebDAV (HTTP PUT).

¿Fue útil?

Solución

cURL lo hará por usted.

curl -T filetoput.xml http://www.url.com/filetoput.xml

Otros consejos

Para Unix (y Windows con Cygwin instalado) puede usar Cadaver

La utilidad HTTP de línea de comandos más utilizada parece ser cURL , que hará PUT con su -t opción . Sin embargo, deberías entender un poco el protocolo WebDAV para hacer más que cargar con él.

Gratis WinSCP (para Windows) es compatible con WebDAV (y WebDAVS).
 WinSCP también admite operaciones de guión / línea de comandos.

Ejemplo de secuencia de comandos de WinSCP para cargar un archivo a través de WebDAV:

open https://user@webdav.example.com/
put file.txt /path/
exit

Guarde el script en un archivo (por ejemplo, script.txt ) y ejecute como:

winscp.com /script=script.txt

También puedes poner todo en una sola línea:

winscp.com /command "open https://user@webdav.example.com/" "put file.txt /path/" "exit"

Comience con la introducción a las secuencias de comandos con WinSCP .

Incluso puede hacer que GUI de WinSCP genere el archivo de script para usted .

(soy el autor de WinSCP)

esta descripción general contiene una lista completa de servidores webdav y clientela.

Optaría por un cadáver o, si mis necesidades fueran muy específicas, una secuencia de comandos de Python utilizando PyWebDAV biblioteca.

Otra opción es " davix "

https://dmc.web.cern.ch/projects/davix/home

ha separado utils como davix-mkdir davix-put, etc. Puedes especificar credenciales en URL como

 davix-mkdir http://user:passw@example.com/dir_to_create
 davix-put local_file http://user:passw@example.com/dir_to_create/remote_file_name

Use KIO bajo KDE:

kioclient cp file.txt 'webdavs://user@webdav.example.com:443/'

Si necesita cargar el directorio completo en lugar de un archivo a través de WebDAV, puede utilizar el siguiente enfoque.

Imagina que tienes la siguiente carpeta local que subirás a través de WebDAV.

local_folder_to_upload
│   test.txt
│   test1.txt    
│
└───nested_folder1
│   │   file1.txt
│   │   file2.txt
│   │
│   └───nested_folder2
│       │   file11.txt
│       │   file12.txt

1. Primero debe crear directorios anidados desde su carpeta local (si los tiene) en un servidor. Dado que WebDAV no admite la carga recursiva, debe hacer esto en un paso separado ( si tuviera que usar ftp : agregarías la marca --ftp-create-dirs para hacer esto). Para crear esas carpetas a través de WebDAV, debe usar método MKCOL .

curl -X MKCOL 'http://your.server/uploads/nested_folder1' --user 'name:pwd'
curl -X MKCOL 'http://your.server/uploads/nested_folder1/nested_folder2' --user 'name:pwd'

Tenga en cuenta que no puede crearlos en una solicitud de acuerdo con a la especificación .

  

si se realiza una solicitud para crear una colección / a / b / c / d /, y   / a / b / c / no existe, la solicitud debe fallar.

2.Segundo puede utilizar la salida de find comando shell para cargarlo en su servidor usando curl .

cd local_folder_to_upload && find . -exec curl -T {} 'http://your.server/uploads/{}' --user 'name:pwd' \;

El código anterior recorre todos los archivos dentro del directorio dado (usando find) y agrega la salida (nombre de archivo con ruta relativa) al marcador de posición {} en la url de su servidor web. Por lo tanto, realiza múltiples solicitudes (una por cada archivo), y dado que todas las carpetas anidadas se crearon de antemano, esas solicitudes no deberían fallar.

Espero que sea útil para alguien.

Telerik Fiddler tiene un " componer " pestaña donde puedes crear tu Propia solicitud webDAV personalizada. P.ej. PROPFIND y OPCIONES, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top