tools‎ > ‎my tools‎ > ‎

ftpget.sh(FTPの自動化)

【ダウンロード】
http://www.ixam.net/Downloads/ftpget.zip

【CSVリストのファイルを自動的にFTPで取得するシェルスクリプト】

【制作日】2009/06/08

【動作環境】#!/bin/sh

【開発環境】fedora core 8 vi

■機能■
ftp_data.csvのリストに従ってftpサーバからファイルを取得します。

■ファイル構成■
getftp.sh→本体
ftp_data.csv→ftpログイン先リスト

■インストール方法■
1.getftp.shを適当なフォルダに展開。
2.chmod 777 getftp.sh

■アンインストール方法■
展開したフォルダを削除。

■使い方■
1.ftp_data.csvに以下の書式で必要情報を記入します。
 →ftp_data.csv書式
コピー元フルパス(remote),コピー元ホスト(remote),コピー元ID(remote),コピー元pass(remote),コピー先ディレクトリ(local)

 →ftp_data.csv記入例
remotepath,hostip,userid,password,/localdirectory
/ftptest/ftptest.txt,192.168.1.2,anonymous,anonymous,/ftpdl

2.ftpget.shを叩く。
例:./ftpget.sh ftp_data.csv

*実はファイル名は見ての通り引数なので別に自由でOK。

■注意■
サンプルとして一緒に入っているftp_data.csvは改行コードがWindowsなのでそのまま持ってってもだめっすよ。
全て自己責任において使用のこと。

以上。

■参考にftpget.shべた張り
#!/bin/sh
#引数チェック
if [ $# -ne 1 ]
then
echo 'Usage : ' $0 ''
exit
else
LIST=$1
fi

if [ -e $1 ]
then
echo 'The file exists : ' $1
else
echo 'The file does not exist : ' $1
exit
fi

# $1ファイル(CSV)から読み込み
while read F1
do
#コピー元フルパス(remote)
ff1=(`echo ${F1} | cut -d',' -f1`)
#コピー元ホスト(remote)
ff2=(`echo ${F1} | cut -d',' -f2`)
#コピー元ID(remote)
ff3=(`echo ${F1} | cut -d',' -f3`)
#コピー元pass(remote)
ff4=(`echo ${F1} | cut -d',' -f4`)
#コピー先ディレクトリ(local)
ff5=(`echo ${F1} | cut -d',' -f5`)

cd ${ff5}


{
cat<<_EOF_
open ${ff2}
user ${ff3} ${ff4}
bin
get ${ff1}
_EOF_
} | ftp -n


done < ${LIST}
以上。

複数のサーバからログ収集とか、ファイル収集の自動化が必要な時などに割りと便利に行けるはずです。