2009-08-25 42 views
0

名前が2つの変数X、Yで構成され、ftpサーバーのディレクトリABCのローカルUNIXディレクトリXYZにあるファイルを転送する必要があります。ファイルを転送した後、私はローカルディレクトリのパスに移動する必要があり、私はuntar(入力ファイルは圧縮ファイルです)それらをする必要があります。 FTPに接続するにはユーザー名とパスワードを使用する必要があります。ローカルサーバーにファイルをコピーする際にも、ユーザー名とパスワードを使用する必要があります。FTPサーバーからローカルUNIXサーバーにファイルを転送する

これは私の現在の試みです。それは働くでしょうか?どうすれば改善できますか?

ftp -n hostname <<EOF 
user username pwd 
cd ABC 
get ls *X*.tar | ls *Y*.tar [email protected] : XYZ 
EOF 
bye 
for next in `ls *.tar` 
do 
tar -zvxf $next 
done 
+1

にFTPサーバからファイルをダウンロードするためにwgetを使用することができます。 –

+0

〜<< EOFとEOFの間には、ftp、scp、cpのコマンド以外のコマンドは使用できません。 getは全くコマンドではなく、wgetですが、ftpコマンドの代わりに呼び出す必要があります。 –

答えて

1

以下のコードを試してください。これがあなたを助けることを願っています

#! /bin/bash 

cd local_path 
USER='username' 
PASSWD='password' 
file_name='files' 

for HOST in ftpserver 
do 
echo $HOST 
ftp -n $HOST <<END_SCRIPT 
quote USER $USER 
quote PASS $PASSWD 
bin 
prompt 

cd "remote_path" 
lcd "local_path" 

mget $file_name.gz* 

quit 
END_SCRIPT 
done 

#extract file 
mkdir -p ../archive/$DATE 
for HOST in ftpserver 
do 
     gunzip $file_name.gz 
done 
+0

しかし 1.私はローカルとftpサーバのために異なったユーザ名とpwdsを持っています。 2.名前にXとYを含めるファイルを選択する必要があります – musicking123

+0

ftpとsshのユーザー名が異なる場合は、別の変数を追加するだけで少し調べてください。 –

+0

@ musicking123:1)あなたはdiffユーザーと、ローカルとftpを渡したと言った。私のコードでは、ftpユーザを置いて渡す必要があります。ローカルユーザ/パスは必要ありません。 2)mgetの間に* X * .tarと* Y * .tarを使うことができます。 – Space

1

私はあなただけでそれとftpコマンドラインのftp-ツールやスクリプトのマニュアルに見てお勧めします。

代替方法:を使用してローカルマシンにftpファイルをダウンロードし、次にscpをターゲットマシンに設定します.sshにpublic-key-authenticationを使用すると、scpはパスワードを必要としません。この。

wget --ftp-user=$USERNAME --ftp-password=$PASSWORD ftp://$HOSTNAME/ABC/$Y.tar 
scp $Y.tar [email protected]$SCPHOST/targetpath/$X.tar 
+0

私のコードを見て、それが動作するか教えていただけますか? plz – musicking123

+0

まあ、私はあなたのscpコマンドをftpサーバーを送信しようとしないと思います。 –

-1

あなたがFTPにしながら、scpコマンドでは動作しないことができunixシステム

cd YOUR_DIRECTORY 

wget --user=USERNAME --password='PASSWORD' HOST_NAME/REMOTE_PATH/FILE_NAME.EXTENSION 
関連する問題