これは

初老丸アドベントカレンダー 2 日目の記事です。

集え、初老丸達よ。初老丸達による世界に向けた技術的(又はそれに関連する)な物語を綴るカレンダーです。我こそ初老丸という方、初老丸予備軍の方も奮ってご参加下さい。

qiita.com

ということで、小ネタ大ネタを交えて 12/25 まで張り切っていきましょう。

何か

FTP

それはファイルを手軽に転送出来るいにしへの技術。
稀に FTP でファイル転送をしたいという要望を頂き、FTP サーバーの設定及びユーザー作成を行うことがあります。
設定後に FTP サーバーが正しく設定されているか、特に作成したユーザーが意図した通りに FTP 操作が出来るかどうかを確認しようとする場合、手元の FTP クライアントで繋いでという手動での確認よりも、機械的に確認したいなあと思い Ruby で FTP 接続してファイルのアップロードやダウンロード等の一通りの FTP 操作が出来るスクリプトをこさえてみました。

いにしへのスクリプト

いにしへの確認

access.yaml

access.yaml に FTP サーバーや Passive mode の設定、FTP ユーザーのユーザー名とパスワードを以下のように設定します。

- host: xx.xx.xxx.xxx
  mode: true
  users:
   - username: hage
     password: xxxxxxxxxxx
   - username: pika
     password: xxxxxxxxxxx

確認

いざ、確認です。

bash-3.2$ bundle exec ruby ftp-check.rb
host: xx.xx.xxx.xxx ##########################################################
user: hage
check: FTP サーバーに接続 [ ok ]
/
check: カレントディレクトリを表示 [ ok ]
check: ディレクトリを移動 [ ok ]
/
check: ファイルの一覧を取得 [ ok ]
-rw-r--r--    1 30001    30100          18 Apr 18  2016 .bash_logout
-rw-r--r--    1 30001    30100         193 Apr 18  2016 .bash_profile
-rw-r--r--    1 30001    30100         231 Apr 18  2016 .bashrc
check: ディレクトリを作成 [ ok ]
-rw-r--r--    1 30001    30100          18 Apr 18  2016 .bash_logout
-rw-r--r--    1 30001    30100         193 Apr 18  2016 .bash_profile
-rw-r--r--    1 30001    30100         231 Apr 18  2016 .bashrc
drwxrwxr-x    2 30001    30100           6 Dec 03 15:27 test
check: ファイルをアップロード [ ok ]
-rw-rw-r--    1 30001    30100           0 Dec 03 15:27 sample.html
check: ファイル名を変更 [ ok ]
-rw-rw-r--    1 30001    30100           0 Dec 03 15:27 sample1.html
check: ファイルを取得 [ ok ]
-rw-r--r--  1 kawahara  staff  0 Dec  3 15:27 sample1.html
check: ファイルを削除 [ ok ]
check: ディレクトリを削除 [ ok ]
check: 通信を終了 [ ok ]
------------------------------------------------------------------------------
user: pika
check: FTP サーバーに接続 [ ok ]
/
check: カレントディレクトリを表示 [ ok ]
check: ディレクトリを移動 [ ok ]
/
check: ファイルの一覧を取得 [ ok ]
-rw-r--r--    1 30000    30000          18 Apr 18  2016 .bash_logout
-rw-r--r--    1 30000    30000         193 Apr 18  2016 .bash_profile
-rw-r--r--    1 30000    30000         231 Apr 18  2016 .bashrc
check: ディレクトリを作成 [ ok ]
-rw-r--r--    1 30000    30000          18 Apr 18  2016 .bash_logout
-rw-r--r--    1 30000    30000         193 Apr 18  2016 .bash_profile
-rw-r--r--    1 30000    30000         231 Apr 18  2016 .bashrc
drwxrwxr-x    2 30000    30000           6 Dec 03 15:27 test
check: ファイルをアップロード [ ok ]
-rw-rw-r--    1 30000    30000           0 Dec 03 15:27 sample.html
check: ファイル名を変更 [ ok ]
-rw-rw-r--    1 30000    30000           0 Dec 03 15:27 sample1.html
check: ファイルを取得 [ ok ]
-rw-r--r--  1 kawahara  staff  0 Dec  3 15:27 sample1.html
check: ファイルを削除 [ ok ]
check: ディレクトリを削除 [ ok ]
check: 通信を終了 [ ok ]
------------------------------------------------------------------------------

おお、ちゃんと FTP 接続してファイル操作もいけてるようです。

以上

Rspec でやれると良さそうなんだけど。

元記事はこちら

ショロカレ 2 日目 | 作成した FTP ユーザーが正しく FTP 操作を行えるかを確認するスクリプト的な何か