Utilidad de línea de comandos para la carga de WebDAV
-
05-07-2019 - |
Pregunta
Necesito una utilidad de línea de comandos que pueda realizar la carga de WebDAV (HTTP PUT).
Solución
cURL lo hará por usted.
curl -T filetoput.xml http://www.url.com/filetoput.xml
Otros consejos
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.