Kyoto Tycoonを各種スクリプト言語で使う最も簡単な方法 の bash + cURL 版
http://fallabs.com/mikio/tech/promenade.cgi?id=111
なんで cURL がないのかと思えたので書き留めておこう。いや、 ktutilmgr とか使えばいいんだけれど…。
#!/bin/bash # FIXME: eval される文字列をチェック # FIXME: URL エンコード # FIXME: HTTP ヘッダエンコード # サーバ接続情報 kt_handle() { echo "local host=${1:-127.0.0.1}" echo "local port=${2:-1978}" echo "local timeout=${3:-30}" } # レコードを格納する kt_set() { eval "${1:?}" local key="${2:?}" value="${3:?}" xt="$4" if [[ -n "$xt" ]]; then curl -fLsSv -m "$timeout" "http://$host:$port/$key" -H "X-Kt-Xt: $xt" -T - <<< "$value" else curl -fLsSv -m "$timeout" "http://$host:$port/$key" -T - <<< "$value" fi } # レコードを削除する kt_remove() { eval "${1:?}" local key="${2:?}" curl -fLsSv -m "$timeout" "http://$host:$port/$key" -X DELETE } # レコードの値を取得する kt_get() { eval "${1:?}" local key="${2:?}" curl -fLsSv -m "$timeout" "http://$host:$port/$key" } # Keep-Alive で複数のレコードの値を取得する kt_get_multi() { eval "${1:?}" local i=0 urls while (( 2<=$# )); do urls[$((i++))]="http://$host:$port/$2" shift done curl -fLsSv -m "$timeout" "${urls[@]}" } # 使い方 kt_test() { kt="$(kt_handle localhost 1978)" kt_set "$kt" japan tokyo "$(date -R --date=tomorrow)" kt_get "$kt" japan kt_remove "$kt" japan kt_set "$kt" aaa AAA kt_set "$kt" bbb BBB kt_set "$kt" ccc CCC kt_get_multi "$kt" aaa bbb ccc }