人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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でのフィールド抽出がうまくいっていないようなんですがなぜでしょうか?
よろしくお願いします。


●質問者: jumpe
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:AWK Cacti CPU grep Perl
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● thrillseeker
●200ポイント

$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

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

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ