この記事では、シェルスクリプト(bashスクリプト)でFTP接続してファイルを転送する方法について紹介しています。
シェルスクリプトでFTP接続する方法は次の2つがあります。
1 コマンドを書いたテキストファイルをリダイレクトする方法
2 ヒアドキュメントを利用する方法
それぞれ順番に紹介していきます。
1 コマンドを書いたテキストファイルをリダイレクトする方法
ftp -p -n < ftp_sample.txt
ftpのオプションに2つ指定しています。
-p : パッシブモードで接続する。
-n : 自動ログインを許可しない。
実際にこのコマンドのみを入力すると画像のように入力待ちになります。
その入力に下記のようなテキストファイルの内容をリダイレクトします。
open [IPアドレス or ドメイン名]
user [ユーザー名] [パスワード]
binary
# アップロード:put [ファイル名]
# ダウンロード:get [ファイル名]
bye
今回はサンプルとして転送形式をバイナリにしています。
※注意
アップロードする際には、アップロード先のディレクトリに cd コマンドで移動する必要があります。
テスト環境にファイルをアップロードするサンプル
ホストオンリーで構成したテスト環境にファイルをアップロードする際のテキストファイルはこのようになります。(libreユーザーのhome/libreにsample.txtをアップロードします。)
open 192.168.56.105
user libre -libre-
binary
cd /home
cd libre
put sample.txt
bye
2 ヒアドキュメントを利用する方法
同様のことがテキストファイルの入力ではなく、bashのヒアドキュメントを利用する方法でも出来ます。ヒアドキュメントとは、区切り文字で指定した範囲のテキストをリダイレクトする機能のことです。
ftp -p -n << EOF
open [IPアドレス or ドメイン名]
user [ユーザー名] [パスワード]
binary
# アップロード:put [ファイル名]
# ダウンロード:get [ファイル名]
quit
EOF
区切り文字に指定した「EOF~EOF」までのテキストをリダイレクトします。
※注意
終端のEOFの前には空白(スペース)を空けないようにしてください。正しく判定されなくなります。
テスト環境にファイルをダウンロードするサンプル
サンプルとしてファイルをダウンロードする際にはこのように記述します。(libreユーザーの/home/libre/sample.txtをダウンロードします。)
ftp -p -n << EOF
open 192.168.56.105
user libre -libre-
binary
get /home/libre/sample.txt
quit
EOF
以上です。
参考になればうれしいです。
コメント