これは
初老丸アドベントカレンダー 2 日目の記事です。
ということで、小ネタ大ネタを交えて 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 でやれると良さそうなんだけど。