curl 显示大于号而不是将给定文件上传到给定服务器

curl 显示大于号而不是将给定文件上传到给定服务器

我想在 Linux 命令行中将文件上传到 WebDAV 服务器。对此的标准建议是按以下方式使用 curl:

curl -u mail_address:password -T filename.ext https://my_server.com/dav/filename.ext

当我执行此命令时,它会在命令提示符中显示一个大于号,好像我的命令不完整,没有发生上传:

$ curl -u mail_address:password -T filename.ext https://my_server.com/dav/filename.ext
$ >

但是,它并没有告诉我在这里要输入什么,也没有告诉我在互联网上要发布什么(例如有没有办法通过命令行上传到 box.com 存储?) 是否曾提到您必须在此命令后输入一些其他内容。有什么想法可以解决此问题?邮件地址密码引用现有帐户,并且文件名.扩展名指的是我的机器上现有的文件。

附言

  • Ubuntu 14.04
  • curl 7.35.0(x86_64-pc-linux-gnu)libcurl/7.35.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3

答案1

我敢打赌你的密码里有一个引号('")。Bash 认为你已经开始了一个多行字符串/引号,所以它会给你$PS2迅速的在第二行,通常是>

确保你的论点都是正确逃脱

例如:
如果您的密码是$jkl;'",那么您可以使用双引号将其转义,如"\$jkl;'\""

或者,您可以像这样运行命令:

curl -u mail_address -T filename.ext https://dav.box.com/dav/filename.ext

然后,curl将提示您输入密码,如下所示:

deltik@node51 [~]$ curl -u mail_address -T filename.ext https://dav.box.com/dav/filename.ext
Enter host password for user 'mail_address':

文档

-u--user <user:password>

指定用于服务器身份验证的用户名和密码。覆盖-n--netrc--netrc-optional

如果您仅指定用户名,curl 将提示输入密码。

用户名和密码在第一个冒号处分开,因此使用此选项时无法在用户名中使用冒号。但密码仍然可以。

在基于 Windows 的服务器上使用 Kerberos V5 时,您应该在用户名中包含 Windows 域名,以便服务器成功获取 Kerberos 票证。如果不这样做,初始身份验证握手可能会失败。

当使用 NTLM 时,如果您的设置中只有一个域和林,则可以简单地将用户名指定为用户名,而无需域。

要指定域名,请使用下级登录名或 UPN(用户主体名称)格式。例如,EXAMPLE\user 和 [电子邮件保护]分别。

如果您使用启用了 Windows SSPI 的 curl 二进制文件并执行 Kerberos V5、Negotiate、NTLM 或 Digest 身份验证,那么您可以通过使用此选项指定单个冒号来告诉 curl 从您的环境中选择用户名和密码:“-u:”。

如果多次使用此选项,则将使用最后一个选项。

相关内容