cactiでCPUファンの回転数/温度を表示しようとしています。

値を取得するスクリプトの作成でつまずいてますのでわかる方教えてください。

↓スクリプト(cpufan.pl)の中身
----
#!/usr/bin/perl
$cpufan = `/usr/bin/sensors | grep "CPU Fan" | awk '{print $3}'`;
print $cpufan;
----

コマンドラインで、perl cpufan.plを実行すると以下のように出力されてしまいます。
CPU Fan: 7670 RPM (min = 2657 RPM, div = 2)

なお、直接 /usr/bin/sensors | grep "CPU Fan" | awk '{print $3}' を実行すると7670という希望する値のみが出力されます。

awkでのフィールド抽出がうまくいっていないようなんですがなぜでしょうか?
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:2007/05/20 03:34:38
  • 終了:2007/05/20 10:17:15

回答(1件)

id:thrillseeker No.1

thrillseeker回答回数328ベストアンサー獲得回数372007/05/20 04:06:05

ポイント200pt

$3 というのが awk に渡る前に perl で処理されてしまうためです。

{print $3} の部分を {print \$3} とすればそのまま awk に渡され、希望する動作が得られるはずです。

 

それよりも、折角 perl を使うのであれば処理を全て perl でやってみてはどうですか?

perl は grep や awk の両方とその100倍強力な機能を持つスクリプト言語です。

#! /usr/bin/perl

$cpufan = `/usr/bin/sensors`;

if ($cpufan =~ /CPU Fan: (\d+)/) { print "$1\n"; }

このスクリプトを cpufan2.pl として保存し、

chmod 755 cpufan

として実行属性をつければ

cpufan

と打つだけで使用できます。

id:jumpe

ありがとうございます。無事に動きました。

変数がperl側で解釈されてたんですね。恥ずかしい・・。

2007/05/20 10:15:52

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません