frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

監視。

訳あって今週は、途中から「監視係」みたいになり

他の作業が全然進まないので

一時的にしか使用しないけど、監視ツールを作ってみたら、

あれこれ罠が。

てな訳で、メモ。

・cron に仕掛けたスクリプトで、リモートサーバー上でスクリプトを実行させる時の罠

* * * * * スクリプトA

このスクリプトAは、shell でも perl でも何でも良いんだけど

こん中で、とにかくリモートサーバー上のスクリプト

以下のようにして叩く、と。

ssh リモートサーバー スクリプトBのパス 引き数

で、この結果起動するスクリプトBが shell で

かつ shell の中で「cd」すると実行出来ない…orz

cron で起動した場合、

「PATHが通ってなくて UNIXコマンドが起動しなかった」というのは

以前の会社でくらっていたので、またそのパターンかと思い、

cd のフルパスを調べると…

$ which cd

alias cd xxxx

…と出てしまい、cd は BASH_BUILTINS なのだそうで。がーん。

てな訳で、私のへなちょこレベルじゃお手上げだったので

すぐに諦めたよ、cd。

でも、何故そもそも cd したかったか?っちゅーと

とあるディレクトリ内で grep かけて、

特定の文字列を含むファイル名を取得したかったのだけど

$ grep -l 文字列 /xxx/xxx/xxx/xxx/xxx/xxx/*.html
などとやったら

「引き数が長すぎます」などと表示されたので、

まずはそのディレクトリまで移動しようと、cd を使ったので。

つまりは「検索出来りゃーいい」訳です。えいっ。

$ find /xxx/xxx/xxx/xxx/xxx/xxx/ -name '*.html' -exec grep -l 文字列 {} \;

あーあー。なんてこったい。なんか無駄だ。無駄なんだ。でも仕方ないのさ。うー。

・リモートサーバー上のperlスクリプトに引き数を使って実行すると Insecure dependency とかで怒られる

$ ssh リモートサーバー スクリプトCのパス 引き数

問題は、スクリプトCの中で

cp だの mkdir だのしてるからなんだけど、

仕方ないので $ENV{'PATH'} = ''; にしといて

cp はフルパスで起動したり、

引き数に対して…

my $string = $ARGV[0];

$string =~ /(/*)/;

my $untaintString = $1;

などと書いて誤魔化して

動かしました。うー。

CPANモジュールの File::Copy はタイムスタンプをキープしない

悲しいかな、バックアップの為に File::Copy を使ったら

コピーしたファイルのタイムスタンプが、

コピーした時刻になってもた orz

仕方ないので急いでたし system("cp -p xxx"); としました。

すいません。ごめんなさい。へなちょこの嵐です。うー。

なにはともあれ、監視ツールは一応完成したので

今週末、会社に出てきて監視とか

監視チームに何かお願いするとかって事なく

今に至りますがーーー…

・・・ほんとに今頃ちゃんと動いてるといいなぁー(大汗)