用于FTP的Shell脚本不能登录

时间:2017-07-18 22:27:28

标签: shell ftp

嘿,我已准备好关于此类问题的大量帖子,但没有一条建议解决了我的问题。也许我错过了什么?我想要做的是远程服务器“A”的ftp文件,并将它们保存到本地网络服务器,我计划通过cron运行这个脚本

我的Cron:

* 1 * * * ./public/xfer.sh > ./public/xferlog.log

我的剧本:

HOST='255.255.255.255'
USER='myadminuser'
PASSWD='supersecretpassword'

ftp -n -v -i $HOST<<EOF
quote USER $USER $PASSWD
lcd /usr/www/xxxx/public/svss/cq
ascii
cd svss
get pbsvss.htm
binary
close
EOF

给我这些错误..

./xfer.sh: line 4: $'\r': command not found
./xfer.sh: line 14: warning: here-document at line 5 delimited by end-of-file (w')ted `END_SCRIPT
 (255.255.255.255)..255.255.255
220 Microsoft FTP Service
Remote system type is Windows_NT.
331 Password required for myadminuser .
530 User cannot log in.
usage: lcd local-directory
200 Type set to A.
530 Please login with USER and PASS.
 remote: pbsvss.htm
530 Please login with USER and PASS.
ftp: bind: Address already in use
200 Type set to I.
221 Goodbye.
?Invalid command

2 个答案:

答案 0 :(得分:0)

没关系,我决定用wget做这件事。

现在我所要做的就是以下1行代码,

wget -P /path/to/save/to/ -nH --cut-dirs=1 -m ftp://user:pass@ip.or.hostname/directory/

答案 1 :(得分:0)

我如何解决安全问题绝不会将原始密码传递给脚本。

像这样的东西(显然我采取了进一步的步骤,但这是它的基础)

我在shell中

echo -n 'mysecretpass' | base64
c2NvdHRsaW51eC5jb20gcm9ja3MK

然后在脚本中我只使用cmdline中的输出

$pass = c2NvdHRsaW51eC5jb20gcm9ja3MK | base64 --decode