[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:24300] Re: Checking AC on/off on apmd
佐野@浜松です。
In <20001003170946C.tach@xxxxxxxxxxxxx>,
on "Tue, 3 Oct 2000 17:06:04 +0900',
with "Re: Checking AC on/off on apmd",
tach@debian.or.jp (Taku YASUI) さん wrote:
> fsatoh> どんなファイル名にして入れましたか?
> fsatoh> わたしもハマリましたが、/etc/pam/apmd_proxy スクリプトの
> fsatoh> 正規表現が不適切なような気がします。
>
> たしかに…
本当に ?
> でも,「99shutdown」という名前で置きましたが,きちんと実行
> されてるようですよ.
>
> なぜだらう…
>
> fsatoh> - for d in $(ls $DIR | grep '^[-_0-9A-Za-z]\+$'); do
> fsatoh> + for d in $(ls $DIR | egrep '^[0-9][0-9]'); do
>
> fsatoh> もとのままだと、英数字もしくは - から始まって、+ で終わるファイル名に
> fsatoh> しかマッチしません。
GNU grep を甘く見てますね :)
man grep より引用:
%%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
正規表現
grep は、基本的な正規表現と 古い UNIX の egrep に相当する
拡張正規表現の 2 種類の正規表現を扱う事ができます。ただし、
本 grep (GNU プロダクトの grep) では、どちらの表現も機能的に
違いありません。他のインプリメントでは、基本正規表現は、
拡張正規表現より制限があるようになっていますが、本 grep では、
表記上の違いだけです。ここでは、拡張正規表現について説明し、
基本正規表現との違いはその後に説明します。
(中略)
次の表現は、他の正規表現を修飾します。拡張正規表現です。
? 他の正規表現の後に指定し、0 回か 1 回マッチさせます。
マッチしない場合も一致とします。
* 他の正規表現の後に指定し、0 回以上マッチさせます。
マッチしない場合も一致とします。
+ 他の正規表現の後に指定し、その正規表現を 1 回以上
マッチさせます。なお、少なくとも 1 回はマッチしなく
てはいけません。
(中略)
基本正規表現では、 ?, +, {, |, (, ) は、正規表現としての
特殊な意味は持たず、その文字本来のパターンにマッチします。
代わりに、 \?, \+, \{, \|, \(, \) を使う事で、拡張正規表現と
同じ機能を持ちまます。
%%%%% %%%%% %%%%% 引用おわり %%%%% %%%%% %%%%% %%%%% %%%%%
つまり、GNU grep の場合、 "grep '^[-_0-9A-Za-z]\+$')" と
"egrep '^[-_0-9A-Za-z]+$' " は同じ機能を提供します。
したがって、「英数字またはハイフン '-' もしくはアンダースコア '_' で
始まるファイル名だけが実行される」のはそのとおりですが、「+ で終る
ファイル名」というのは誤解です。
なお、「英数字またはハイフンもしくはアンダースコアで始まるファイル名」
だけを実行対象にするのは Debian の標準ツールである run-parts の仕様です。
%%%%%% man run-parts より引用 %%%%% %%%%% %%%%% %%%%% %%%%%
DESCRIPTION
run-parts runs a number of scripts or programs found in a
single directory directory. Filenames should consist
entirely of upper and lower case letters, digits, under-
scores, and hyphens. Subdirectories of directory and
files with other names will be silently ignored.
Scripts must follow the #!/bin/interpretername convention
in order to be executed. They will not automatically be
executed by /bin/sh.
The files found will be run in the lexical sort order of
the filenames.
%%%%%% 引用おわり %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
> 結局,上記のように変更しても,start stop しか吐いてくれない
> ようなので,あきらめて,ruby でスクリプト書いて,cron で動かす
> ようにしました.
違うとは思うけど、スクリプトに実行属性が無いとか (でもそれなら
start/stop でも実行されないか) /root/apm.log に書き込む権限が
無いとか。
woody ではやってないのですが、中原さんと同じように試しに
potato 上で
$ cat /etc/apm/event.d/test
#! /bin/sh
logger -t pcmcia "msg: $*"
$ ls -l /etc/apm/event.d/test
-rwxr-xr-x 1 root root 39 Oct 4 00:25 /etc/apm/event.d/test
なスクリプトを作ってみたら、ちゃんと AC の抜き挿しで /var/log/messages に
Oct 4 00:25:49 pika pcmcia: msg: change power
Oct 4 00:25:52 pika pcmcia: msg: change power
と記録されました。
--
# (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
<kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)