如何做ftp,不会在shell脚本中要求用户名和密码?

时间:2016-01-23 11:41:32

标签: unix ftp

我试过这样:

#!/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.

如果我的问题太容易了,请不要费心回答。

我是初学者并且正在努力学习。任何帮助将不胜感激。

1 个答案:

答案 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),但使用您拥有的客户端似乎是最简单的选项。