使用curl通过FTPES登录时如何转义用户名中的“@”?

使用curl通过FTPES登录时如何转义用户名中的“@”?
$ curl -T "index.html" -k --ftp-ssl -u "[email protected]" MYDOMAIN.COM
Enter host password for user '[email protected]':


 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0 57173    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>405 Method Not Allowed</title>
</head><body>
<h1>Method Not Allowed</h1>
<p>The requested method PUT is not allowed for the URL /index.html.</p>
<hr>
<address>Apache/2.2.16 Server at MYDOMAIN.COM Port 80</address>
</body></html>
100 57480  100   307  100 57173    284  52902  0:00:01  0:00:01 --:--:-- 53633

发布堆栈溢出

答案1

问题不在于@(您不需要逃避它),而在于您curl一开始就没有被告知使用 FTP。请注意,您正在从 HTTP 服务器接收 HTTP 响应。

cURL 采用 URL,如果遇到裸 URL,mydomain.com则会http://自动添加。使用curl ... ftps://mydomain.com--ftp-ssl顺便说一下,它会自动启用)。

答案2

我用 wireshark 嗅探了一下:

curl --ftp-ssl -T“文件.TXT”-k -u“[电子邮件保护]:我的密码” ”ftp://MYDOMAIN.COM

这个使用 ftps!:P 它运行完美!解决了 :)

谢谢你!

相关内容