Utilitaire de ligne de commande pour le téléchargement WebDAV
-
05-07-2019 - |
Question
J'ai besoin d'un utilitaire de ligne de commande capable d'effectuer le téléchargement WebDAV (HTTP PUT).
La solution
cURL le fera pour vous.
curl -T filetoput.xml http://www.url.com/filetoput.xml
Autres conseils
Gratuit WinSCP (pour Windows) prend en charge WebDAV (et WebDAVS).
WinSCP prend également en charge les opérations de script / en ligne de commande.
Exemple de script WinSCP pour télécharger un fichier via WebDAV:
open https://user@webdav.example.com/
put file.txt /path/
exit
Enregistrez le script dans un fichier (par exemple, script.txt
) et exécutez la procédure suivante:
winscp.com /script=script.txt
Vous pouvez également tout mettre sur une seule ligne:
winscp.com /command "open https://user@webdav.example.com/" "put file.txt /path/" "exit"
Commencez par la introduction à la génération de scripts avec WinSCP .
Vous pouvez même faire en sorte que l’ interface graphique de WinSCP génère le fichier de script pour vous .
(je suis l'auteur de WinSCP)
cet aperçu contient une liste complète de serveurs WebDav et les clients.
Je choisirais cadaver ou, si mes besoins étaient très spécifiques, un script python utilisant PyWebDAV .
Une autre option est "davix"
.https://dmc.web.cern.ch/projects/davix/home
il a séparé les utils comme davix-mkdir davix-put etc. Vous pouvez spécifier des créations dans une URL comme
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
Utilisez KIO sous KDE:
kioclient cp file.txt 'webdavs://user@webdav.example.com:443/'
Si vous devez télécharger l'intégralité du répertoire au lieu d'un fichier sur WebDAV, vous pouvez utiliser l'approche suivante.
Imaginez que vous ayez le dossier local suivant à télécharger via WebDAV.
local_folder_to_upload
│ test.txt
│ test1.txt
│
└───nested_folder1
│ │ file1.txt
│ │ file2.txt
│ │
│ └───nested_folder2
│ │ file11.txt
│ │ file12.txt
1.Vous devez d'abord créer des répertoires imbriqués à partir de votre dossier local (si vous en avez) sur un serveur. WebDAV ne prenant pas en charge le téléchargement récursif, vous devez le faire séparément ( si vous deviez utiliser ftp
- vous ajouteriez l'indicateur - ftp-create-dirs
). Pour créer ces dossiers sur WebDAV, vous devez utiliser la méthode 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'
Veuillez noter que vous ne pouvez pas les créer dans une requête en fonction de à la spécification .
si une demande de création de collection / a / b / c / d / est faite, et / a / b / c / n’existe pas, la requête doit échouer.
2.Deuxièmement, vous pouvez utiliser la sortie de find commande shell à télécharger sur votre serveur à l'aide de curl
.
cd local_folder_to_upload && find . -exec curl -T {} 'http://your.server/uploads/{}' --user 'name:pwd' \;
Le code ci-dessus parcourt tous vos fichiers dans un répertoire donné (à l'aide de find) et ajoute la sortie (nom de fichier avec chemin relatif) à l'espace réservé {}
dans l'URL de votre serveur Web. Donc, il fait plusieurs demandes (une par fichier), et puisque tous les dossiers imbriqués ont été créés à l'avance, ces demandes ne devraient pas échouer.
J'espère que c'est utile pour quelqu'un.
Telerik Fiddler a un " composer " onglet où vous pouvez créer votre propre requête WebDAV personnalisée. Par exemple. PROPFIND et OPTIONS etc.