2017-07-18 80 views
0

嘿所有我已经准备好关于这种类型的问题的许多帖子,但没有任何建议已解决我的问题。也许我错过了什么?我所试图做的是从远程服务器“A” FTP文件并将其保存到本地网络服务器和我计划通过的cron这样外壳脚本为FTP不登录在

我的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 
+0

您确定它不需要域名,因为它是您登录的Windows系统?像'somedomain/myadminuser' – Difster

+0

稍微偏离主题:为了通过FTP传输文件,我发现使用'ncftp'工具集比直接使用ftp更容易。 – John1024

+0

我确定我不需要域名,因为我可以复制和粘贴每一行,并且工作正常。至于ncftp,不幸的是我在一个共享的主机系统,并没有安装任何其他应用程序/程序的权限。我有ssh访问权限,这就是我测试代码的地方 –

回答

0

没关系,我决定使用wget做THI而不是。

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

wget -P /path/to/save/to/ -nH --cut-dirs=1 -m ftp://user:[email protected]/directory/ 
+0

就像一个注释,这将密码放在命令行上,任何拥有系统shell的用户都可以使用'ps'来查看完整的命令行。在许多情况下,这可能是一个安全问题。 – John1024

+0

更多信息:快速查看手册页,显示'wget'支持'〜/ .wgetrc'(或'〜/ .netrc'),因此可以相对安全地存储密码。 – John1024

0

我做什么来解决安全问题是从来没有过的原始密码写入脚本。

像这样(很明显,我采取进一步措施,但是这是它的基本功能)的壳我做

echo -n 'mysecretpass' | base64 
c2NvdHRsaW51eC5jb20gcm9ja3MK 

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

$pass = c2NvdHRsaW51eC5jb20gcm9ja3MK | base64 --decode