Requires net_digest_auth.rb (snippet)
NB: Does not handle MKCOL, so the directory where you place the file must already exist.
Usage
$ ruby upload.rb cert.yml source destination
where cert.yml is a file of the form
username: USERNAME password: PASSWORD
source is the path to the file to upload
destination is the URL of a directory on a webdav server to upload to.
# upload.rb # Command line webdav upload script. Based off of # http://theexciter.com/articles/bingo require 'net_digest_auth' require 'yaml' require 'uri' abort("Usage: #{$0}") unless ARGV.size==3 auth = YAML.load_file(ARGV[0]) username = auth['username'] password = auth['password'] src = ARGV[1] dst = ARGV[2] if File.exists?(src) url = URI.parse(dst) Net::HTTP.start(url.host) do |http| res = http.put(url.request_uri, 'hello') # try putting something so # the server will return a # www-authenticate header req = Net::HTTP::Put.new("#{url.path}#{File.basename(src)}") req.digest_auth(username, password, res) response = http.request(req, File.open(src).read) puts response.code + " " + response.message end else puts "No such file #{src.inspect}" end