我试过这样:
#!/bin/bash
hostname="xx.xx.xx.xx"
username="ftp"
password="123456"
ftp $username:$password@$hostname <<EOF
read filename
put $filename
quit
EOF
erorr如下:
ftp: ftp:123456@10.64.40.11: Name or service not known
?Invalid command
Not connected.
如果我的问题太容易了,请不要费心回答。
我是初学者并且正在努力学习。任何帮助将不胜感激。
答案 0 :(得分:1)
您遇到的问题是默认的FTP客户端不允许您在命令行中指定用户和密码以及主机。它正在寻找名为ftp:123456@10.64.40.11
的主机,它显然不存在。您可以在命令行中指定主机,但就是这样。 this article中详细描述了这种情况和解决方案,其中包含其他版本和示例。
基本思路是关闭&#34;自动登录&#34;使用-n
并在HERE文档中而不是在命令行中指定用户和密码:
#!/bin/bash
hostname="xx.xx.xx.xx"
username="ftp"
password="123456"
ftp -n $hostname <<EOF
user $username $password
read $filename
put $filename
quit
EOF
(请注意,我已将$
添加到read filename
,这似乎是原始版本中的拼写错误。)
还有其他FTP客户端允许在命令行中指定用户和密码(例如ncftp),但使用您拥有的客户端似乎是最简单的选项。