【シェルスクリプト】FTP接続でファイル転送する方法│ファイル入力、ヒアドキュメント

プログラマのメモ帳

この記事では、シェルスクリプト(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

以上です。
参考になればうれしいです。

コメント

タイトルとURLをコピーしました