ECサイト基本システム

[Tomcat] Cadaverを使ってみる Part.2

昨日に続いて、今日は Cadaver を使ったファイル送受信シェルの作成方法などをメモメモ。

Cadaver をインストールし、自動ログインファイルの作成も終わったら、次はファイル送受信シェルの作成。パラメータで処理モード、リモートマシン、ファイル名を指定すれば、Cadaver を使ってファイルを送受信してくれる、という簡単なシェルが作れればOK。あ、一応ローカルディレクトリも指定できるようにしようかな。

ということで作ってみたのが、以下のようなシェル。

#!/bin/sh

if [ $# == 4 ]; then
  cd $4
  /usr/local/cadaver/cadaver $2 << EOF
  $1 $3
  quit
EOF
  exit 0
fi
echo "usage: file_sdrv.sh mode remote-url file-name local-dir"
exit 9

パラメータで、処理モード(put/get)、リモートマシンのURL、送受信するファイル名、ローカルディレクトリ(送信するファイルがある場所、もしくは受信するファイルを置く場所)を指定し、パラメータの数があっていれば処理を実行するだけのシェル。

パラメータの文字列チェックなどは一切なし。超簡易版ということで(笑)

一応、処理モードに 'delete' を指定すると、パラメータで指定したファイルをリモートマシンから削除することもできました。'ls' を指定すれば、指定ファイルが存在するかどうかも確認できるかもしれません。

あとはこのシェルの実行結果をファイルにリダイレクトして出力すれば、上位アプリからそのファイルを参照して送受信が成功したか失敗したかの判断ができます。ということで、ある程度の汎用性はある・・・のかな?

ちなみに、シェルで実行結果を判断するには・・・。

#!/bin/sh

if [ $# == 4 ]; then
  LOG_FILE="$3_cadaver.log"

  ./file_sdrv.sh $1 $2 $3 $4 > $LOG_FILE

  RETURN=`grep succeeded $LOG_FILE | wc -l`

  if [ "$RETURN" == 1 ]; then
    echo "$3 の $1 が完了しました。"
    rm -f $LOG_FILE
    exit 0
  else
    echo "$3 の $1 が失敗しました。"
    rm -f $LOG_FILE
    exit 9
  fi
fi
echo "usage: backup_tool.sh mode(put/get) remote-url file-name local-dir"
exit 9

こんな感じでしょうか。あとはうまく修正して使ってください。