2017-07-18 72 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