トップ «前の日記(Mon May 08 2006) 最新 次の日記(Wed May 10 2006)» 編集

よこいまさる日記



Tue May 09 2006 [長年日記]

焼肉

Photo 0 (13:43)

外苑前から徒歩で帰宅

会社からの帰路ぐらいは歩こうと思い、昨日は青山一丁目から国道246→外苑西通り→ホープ軒横の一方通行の道→代々木駅前→初台なんていうコースで帰宅。 今日の帰りは渋谷経由で帰る浜野くんが一緒だったので新橋から銀座線で外苑前まで行って、昨日と同じコース。 千駄ヶ谷あたりってちょっとしたお酒飲める店が多いのですが、こっちは運動すること目的なのでソソクサと歩いて帰ります。

先月・先々月と、体調不良で会社休んだり連休あったり定期券落としたりして定期券買っても元取れない状態だったので、なんだか定期券買う気にならないので、いまのところ定期券買わずにいます。 帰りのコースは定期券に縛られることがないので、いろいろなコースで帰ってみようかと。

Net::SSH と Net::SCP

dbm とかのファイルを生成して配布するスクリプトなんぞをよく書くわけなのですが、配布するときに downtime をなくすためにこんな小細工をしている。

  • 配布先のプロセスは dbm file に mmap するなどの関係で db file は open したままになっている
  • dbm file の内容を更新するために、新しく作った dbm file は temporary な名前になるように配布先マシンに scp する
  • scp が終わったら既存の dbm file を .bak みたいなファイル名に mvして、temporary な名前でおかれた dbm file を本来の名前に mv する。
  • dbm file を使っているプロセスの reattach の部分は、dbm file の名前を stat して inode やら mtime やら ctime が変わっていたら unmap, close, open, mmap という具合に、新しい dbm file に reattach する。

で、こんな処理をするためのスクリプトを、案件やシステムの目的が違えどもショッチュウ書いているわけでして。(現在なんか同様なスクリプトを2つの目的で書いていたり。) 同じような処理ばっかりになっているので、そろそろこの辺をライブラリ化しようかなと思ったりしているわけです。

ssh やら scp するときには、普通に system() とか使っているのですが、もうちょっとかっこよくできないかなと思って CPAN あたってみたところ、Net::SSHNet::SCP なんていうものがあるのですね。 これ使えば下のように system() に引数をダラダラと書かなくってよくなるのかもと。

 $ret = system("/usr/bin/scp -options -q hoge@host localdir/");

今日なんか、remote machine の特定のファイルが存在するかどうかをチェックするために、こんな ssh のコマンド書いていたしなぁ。

#!/bin/sh
if ssh hoge@host test -f /home/hoge/fuga ; then 
    echo "Found"
else
    echo "Not found"
fi

今のところ remote にある数個のファイルを test する程度で終わっているので特に問題ないのだが。 sshやSSLの場合、暗号通信の関係で接続時のキー交換を行うハンドシェイク部での処理量が多いため、sshのコマンドを発行する回数が多いとそれなりに処理時間が長くなってしまう。 これが数千個のファイルのチェックとかになると、shell script そのものを ssh で remote に流し込まないとダメなのかなぁ。 となると、ssh hoge@fuga sh -e '....' みたいなものをがんばって書くのか。。。 なんとなく Remote Procedure Call の Procedure を手軽に流し込める機能が欲しくなってきたぞ。


2000|10|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|