2013年1月4日金曜日

Linuxで温度計測してMRTGへ表示させる(続き)

前回までに環境構築までできました。
あとはMRTGの設定だけ。

まずはMRTGに読み込ませるスクリプトを準備します。
MRTGで渡すのは、大まかには次の形式だそうです。

詳細はMRTGのページの「外部の監視スクリプト」ってところにに書いてあります。
  • 値1
  • 値2
  • 日時
  • ホスト名
コレに合わせて出力されるようにスクリプトを以下のようにします。
#!/bin/sh
TEMPER=`/usr/local/bin/temper | sed -e 's/,/ /' | awk '{ print $3 }' `
echo $TEMPER
echo $TEMPER
uptime | gawk '{$1=""; $2=""; print}'
hostname
これを呼び出すように、/etc/mrtg/mrtg.cfgも修正します。
上のスクリプトを/etc/mrtg/temper_mrtg.shに配置した例です。
#-----------------------------------------------------------------
# 室温
# temperで室温を取得する
#-----------------------------------------------------------------
Target[temp]: `/etc/mrtg/temper_mrtg.sh`
MaxBytes[temp]: 100
Options[temp]: gauge, absolute, growright, nopercent, noinfo                   
YLegend[temp]: Temperature
ShortLegend[temp]: ℃
LegendI[temp]: 室温(℃)
LegendO[temp]: 室温(℃)
Title[temp]: 室温
PageTop[temp]:<H1>室温</H1>
これで表示されるのがこんなイメージです。

MRTGイメージ

なんか温度が0℃になってしまう場合があるんですが、これは原因不明です。
(logにも何も出てないので…)

長くなりましたが、ここまで。

2012年11月28日水曜日

Linuxで温度計測してMRTGへ表示させる


USB温度計ってのがAmazonで売ってたので、これを使って室温を計測する。
ただ計測できるだけならつまんないので、MRTG使って温度もグラフ化してみる。

対象はCentOS 6(VM)です。

USB温度計のセットアップ


まずUSB温度計をPCに繋ぐ。
ただ、普通につないでもVMware上の仮想マシンは認識してくれない(かも)ので、設定でUSBを認識させます。(今回の設定はVMware5を利用してます。)
[仮想マシン設定]を開いて、デバイスの[USBコントロール]を選択して、設定画面で[すべてのUSB入力デバイス]がチェック入りにする。
これで、ツールバーにUSBデバイスがアイコンで表示されます。今回買ったUSB温度計を繋いだら、「Microdia TEMPer1V1.2」が表示されてます。

CentOS側でも確認してみると、次のように表示されてました。
# dmesg | grep TEMP
input: RDing TEMPer1V1.2 as /class/input/input4
input,hidraw0: USB HID v1.10 Keyboard [RDing TEMPer1V1.2] on usb-0000:02:00.0-2.1
hiddev96,hidraw96: USB HID v1.10 Device [RDing TEMPer1V1.2] on usb-0000:02:00.0-2.1
認識されたら、必要なパッケージをインストールします。
# yum -y install libusb-devel  git
gitは温度測定コマンドのソースコードが、githubで公開されているのを利用するために使います。
パッケージのインストールが終わったら、ソースコードのチェックアウトをします。
# git clone git://github.com/bitplane/temper.git
これで現在のディレクトリにtemperディレクトリがチェックアウトされます。
次にソースコードをカスタマイズします。
# vi ./temper/temper.c

以下のように編集。
44行目の utc = gmtime(&t); を utc = localtime(&t); に
47行目の strftime(dt, 80, “%d-%b-%Y %H:%M”, utc); を strftime(dt, 80, “%Y-%m-%d %H:%M:%S”, utc); に

/ *
 * Standalone temperature logger
 *
 */
#include <stdio .h="">
#include <time .h="">
#include "pcsensor.h"
/* Calibration adjustments */
/* See http://www.pitt-pladdy.com/blog/_20110824-191017_0100_TEMPer_under_Linux_perl_with_Cacti/ */
static float scale = 1.0287;
static float offset = -0.85;
int main(){
  int passes = 0;
  float tempc = 0.0000;
  do {
    usb_dev_handle* lvr_winusb = pcsensor_open();
    if (!lvr_winusb) {
      /* Open fails sometime, sleep and try again */
      sleep(3);
    } else {
      tempc = pcsensor_get_temperature(lvr_winusb);
      pcsensor_close(lvr_winusb);
    }
    ++passes;
  }
  /* Read fails silently with a 0.0 return, so repeat until not zero
   or until we have read the same zero value 3 times (just in case
   temp is really dead on zero */
  while ((tempc &gt; -0.0001 &amp;&amp; tempc &lt; 0.0001) || passes &gt;= 4);
    if (!((tempc &gt; -0.0001 &amp;&amp; tempc &lt; 0.0001) || passes &gt;= 4)) {
      /* Apply calibrations */
      tempc = (tempc * scale) + offset;
      struct tm *utc;
      time_t t;
      t = time(NULL);
      /*utc = gmtime(&amp;t); */
      utc = localtime(&amp;t);
      char dt[80];
      /* strftime(dt, 80, "%d-%b-%Y %H:%M", utc); */
      strftime(dt, 80, "%Y-%m-%d %H:%M:%S", utc);
      printf("%s,%f\n", dt, tempc);
      fflush(stdout);
      return 0;
    } else {
      return 1;
    }
  }
}


あとはmakeしたら、コマンドができます。
# cd ./temper
# make

温度計の動作確認

上で作ったコマンドの動作確認です。
makeしたディレクトリにコマンドが生成されているので、実行するとこんな感じになります。
# ./temper
2012-10-15 22:01:48,27.825012
このコマンドを使って、MRTGへのグラフ出力までやってみます。
長くなってしまったので、次の記事にまとめます。

参考:http://www.infiniteloop.co.jp/blog/2012/10/linuxthermometer/

2012年11月5日月曜日

自動的にiTunesの全曲に歌詞を入れる




ここで紹介されてましたが、LyricsMasterというアプリを利用して、iTunesに登録された曲に歌詞をつけてみる。
最初は歌詞なんていらないよ、なんて思ってましたが、歌詞を付けても邪魔にはならないし、意外とあると嬉しいです。

普通にアプリを使うだけなら多分問題ないので、ここでは自分が使った全自動で登録する方法をまとめておく。これで、iTunesで管理されている(ほぼ)全曲に対して(ほぼ)自動的に歌詞を付けれました。

  1. インストールしたアプリを起動、ついでのiTunesも起動する。
  2. 「Lyrics Master」ダイアログで、検索ボタンをクリックし、「歌詞検索」ダイアログを出す。
  3. 「歌詞検索」ダイアログで、「自動検索」と「連続モード」を有効にする。
  4. メニューバーから環境設定を開く。
  5. 「iTunes」タブを開き、「ダウンロード時に自動で適用」を有効に、「設定前に確認画面を表示」を無効にする。
  6. iTunesで、設定したい曲を選択(再生)する。
    ここでは設定するために再生しているので、音を出す必要はないです。
    再生順に歌詞を設定するため、「ランダム再生」や「1曲だけループ再生」は無効にした方が良いです。
  7. 「Lyrics Master」ダイアログで「iTunes連携」ボタンをクリック。検索が始まらない場合は、検索ボタンをクリック。

候補が1つだけ見つかれば、あとは自動で挿入され、次の曲以降も自動検索→歌詞の設定までしてくれます。

候補が複数見つかる場合は、自分で曲をクリックして歌詞の設定をしてあげて下さい。


2012年7月8日日曜日

MediaTombのインストール

CentOSにMediaTombを入れてみる。
MediaTombってのは、Linux他、各種プラットフォームで利用できるDLNAサーバです。
サーバに置いた写真とか動画とかを、PS3とか、VLCとか、DLNAクライアントで見ることができるようになります。
手順でちょこっと詰まったので、設定をまとめとく。


yumでインストールしようとしたら、通常のリポジトリではインストールできないので、一手間必要。
以下ファイルを作成し、設定を記載する。(自分の環境では、ファイルを新規に作成した。)
# vi /etc/yum.repos.d/rpmforge.repo

# Name: RPMforge RPM Repository for Red Hat Enterprise 5 - dag
# URL: http://rpmforge.net/
[rpmforge]
name = Red Hat Enterprise $releasever - RPMforge.net - dag
#baseurl = http://apt.sw.be/redhat/el5/en/$basearch/dag
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

# vi /etc/yum.repos.d/mediatomb.repo

[MediaTomb]
name=Fedora Core $releasever - $basearch - MediaTomb
baseurl=http://yum.mediatomb.cc/fc/$releasever
gpgcheck=1
enabled=1
gpgkey=http://yum.mediatomb.cc/RPM-GPG-KEY-MediaTomb

Keyを更新する。
# wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
# rpm --import RPM-GPG-KEY.dag.txt
yumでインストール。
# yum -y install mediatomb

無事にインストールできましたとさ。
あとは細かい設定をやれば見れるけど、それはまた今度。
こんな感じで見れますよ。


2012年7月2日月曜日

Sambaの設定で疑うこと5つ

Linux環境でSambaサーバを構築したときに、ハマったことがいくつかあったのでまとめておく。
詳細は別途ググって下さい。


1.設定ファイル(smb.conf)は正しく設定されているか

 そんなに設定は不要なはず。最低限動かす分には、デフォルトのままで問題なかったような。


2.起動済みか

 smbdとnmbdが起動で必要?自分の今あるcentosだとsmbdしかサービスに登録されてないから、これだけでも大丈夫かも。


3.アカウントが登録されてるか

 sambaユーザを新規に作るとかあるけど、smb.confに以下の記述があれば、Linuxのユーザでも問題ないはず。
[homes]
  comment = Home Directories
  browseable = no
  writable = yes

4.ポート空いているか

ファイアウォールが設定しているなら、以下のポートは開けるように。
 137/udp
 138/udp
 139/tcp
 445/tcp

5.SELinuxが有効だとwriteできない。

 SELinuxについては何となくしか分かりませんが、ファイルにアクセスしようとするときに、正しく設定していないと、write時にSELinuxの機能でブロックされてしまう。
よくわからないなら、無効にしてしまうのがベタ。


以上、自分がすべてハマった5つでした。
これさえクリアしてれば、とりあえずは動くはず!