2014-07-02 44 views
0

我試圖使用UNIX shell腳本自動執行我的SFTP命令,但由於某種原因它不起作用。這是我的代碼如下。請分享您的想法/見解。使用IBM AIX(UNIX)shell腳本自動執行sftp

#This ftp script will copy all the files from source directory into the local directory. 
#!/bin/sh 
HOST='sftp.xyz.com' 
USER='ABC' 
PASSWORD='123' 
SRC_DIR='From_Src' 
TRGT_DIR='/work/' 
FILE='abc.txt' 

sftp -u ${USER},${PASSWORD} sftp://${HOST} <<EOF 
cd $SRC_DIR 
lcd $TRGT_DIR 
get $FILE 
bye 

EOF 

echo "DONE" 

當我嘗試執行上面的代碼時,我得到下面的錯誤。

sftp: illegal option -- u 
usage: sftp [-1246Cpqrv] [-B buffer_size] [-b batchfile] [-c cipher] 
      [-D sftp_server_path] [-F ssh_config] [-i identity_file] [-l limit] 
      [-o ssh_option] [-P port] [-R num_requests] [-S program] 
      [-s subsystem | sftp_server] host 
     sftp [[email protected]]host[:file ...] 
     sftp [[email protected]]host[:dir[/]] 
     sftp -b batchfile [[email protected]]host 
+0

請定義「不起作用」。預期的行爲是什麼?會發生什麼呢? –

+0

增加了我收到的異常。 – Teja

+0

你是否需要「期待」或考慮其他選擇? – anubhava

回答

1

沒有爲sftp沒有-u選項,看到manual可用選項。您可以以這種格式傳遞用戶名:

你的情況
sftp [email protected] 

所以:

sftp sftp://${USER}@${HOST} <<EOF 

這雖然提示你輸入密碼。如果您不想要密碼提示,請查看以下主題:How to run the sftp command with a password from Bash script?

+0

是的,我嘗試了這個解決方案,但它不工作...我的機器不支持sshpass。 – Teja

+0

我想通過UNIX腳本運行它。 – Teja

+0

還有其他選項 –

0

首先,瞭解如何設置密鑰,以便您可以在不使用密碼的情況下將ssh,scp和sftp發送到服務器。看看ssh-keygen。這相當簡單。我敢打賭,在這個網站上有如何。簡而言之,用ssh-keygen生成你的密鑰。它們是在〜/ .ssh中創建的。然後將您的公鑰添加到目標主機上的〜/ .ssh/authorized_keys,其中〜是您要登錄的用戶的主目錄。即您的示例中的「ABC」。

現在,您可以執行「sftp [email protected]」,您將在sftp.xyz.com上的sftp提示符下。從那裏開始,讓腳本開始工作應該很容易。

我真正的建議是吹掉sftp並使用scp。例如

scp /path/to/the/source_file [email protected]:/remote/path/file 

它那麼簡單。沒有「cd」和其他垃圾處理。你正在使這種方式比實際上更難。

祝你好運

+0

感謝您的反應pedz ..我試圖尋找谷歌和unix論壇已經提供了sfttp自動化解決方案。但我有點不同..我試圖做通過AIX(UNIX)框不允許我運行相同的腳本sftp。我試過ssh-gen期望但是沒有運氣...... – Teja

+0

你的腳本不適用於我所知道的任何平臺。吹掉你的腳本。讓你的鑰匙成立。其餘的將隨之而來。我整天都在使用AIX。它對於AIX來說並不奇怪和獨特。 AIX有任何其他框的標準openssl和openssh。 – pedz