用于 FTP 的外壳脚本未登录



嘿,我已经准备好了有关此类问题的众多帖子,但没有一个建议解决了我的问题。也许我错过了什么?我正在尝试做的是来自远程服务器"A"的FTP文件并将它们保存到本地Web服务器,我计划通过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

没关系,我决定使用 wget 来代替。

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

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

我为解决安全问题所做的是永远不要将原始密码传递到脚本中。

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

在壳牌我愿意,

echo -n 'mysecretpass' | base64
c2NvdHRsaW51eC5jb20gcm9ja3MK

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

$pass = c2NvdHRsaW51eC5jb20gcm9ja3MK | base64 --decode

最新更新