Utilità della riga di comando per il caricamento WebDAV
-
05-07-2019 - |
Domanda
Ho bisogno di un'utilità da riga di comando in grado di eseguire il caricamento WebDAV (HTTP PUT).
Soluzione
cURL lo farà per te.
curl -T filetoput.xml http://www.url.com/filetoput.xml
Altri suggerimenti
L'utilità HTTP della riga di comando più comunemente usata sembra essere cURL , che eseguirà PUT
con la sua -T opzione . Tuttavia, dovresti capire un po 'del protocollo WebDAV per fare di più che caricarlo.
WinSCP (per Windows) gratuito supporta WebDAV (e WebDAVS).
WinSCP supporta anche operazioni di scripting / riga di comando.
Esempio di script WinSCP per caricare un file su WebDAV:
open https://user@webdav.example.com/
put file.txt /path/
exit
Salva lo script in un file (ad esempio script.txt
) ed esegui come:
winscp.com /script=script.txt
Puoi anche mettere tutto su una sola riga:
winscp.com /command "open https://user@webdav.example.com/" "put file.txt /path/" "exit"
Inizia con introduzione allo scripting con WinSCP .
Puoi anche avere La GUI di WinSCP genera il file di script per te .
(sono l'autore di WinSCP)
questa panoramica contiene un elenco completo di server webdav e clienti.
Opterei per il cadavere o, se le mie esigenze fossero molto specifiche, uno script Python usando libreria PyWebDAV .
Un'altra opzione è " davix "
https://dmc.web.cern.ch/projects/davix/home
ha separato utility come davix-mkdir davix-put ecc Puoi specificare le credenziali nell'URL come
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
Usa KIO sotto KDE:
kioclient cp file.txt 'webdavs://user@webdav.example.com:443/'
Se è necessario caricare l'intera directory anziché un file su WebDAV, è possibile utilizzare il seguente approccio.
Immagina di avere la seguente cartella locale che caricherai su WebDAV.
local_folder_to_upload
│ test.txt
│ test1.txt
│
└───nested_folder1
│ │ file1.txt
│ │ file2.txt
│ │
│ └───nested_folder2
│ │ file11.txt
│ │ file12.txt
1. Innanzitutto è necessario creare directory nidificate dalla cartella locale (se presente) su un server. Poiché WebDAV non supporta il caricamento ricorsivo, devi farlo in un passaggio separato ( se dovessi utilizzare ftp
- dovresti aggiungere il flag --ftp-create-dirs
per farlo). Per creare tali cartelle su WebDAV è necessario utilizzare metodo 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'
Si noti che non è possibile crearli in una richiesta in base a alla specifica .
se viene effettuata una richiesta per creare la raccolta / a / b / c / d /, e / a / b / c / non esiste, la richiesta deve fallire.
2.Secondo è possibile utilizzare l'output di trova comando shell per caricarlo sul tuo server usando curl
.
cd local_folder_to_upload && find . -exec curl -T {} 'http://your.server/uploads/{}' --user 'name:pwd' \;
Il codice sopra scorre ciclicamente su tutti i tuoi file all'interno della directory specificata (usando find) e aggiungi l'output (nome file con percorso relativo) al segnaposto {}
nell'URL del tuo server web. Quindi effettua più richieste (una per ogni file) e poiché tutte le cartelle nidificate sono state create in anticipo, tali richieste non dovrebbero fallire.
Spero che sia utile a qualcuno.
Telerik Fiddler ha un "compose" scheda in cui è possibile creare il tuo propria richiesta WebDAV personalizzata. Per esempio. PROPFIND e OPZIONI ecc.