「tempmonitor」を使用して OS X 用に作成したスクリプトがあり、Ubuntu の lm-sensors で使用するために変換しようとしています。
これはオリジナルの OS X スクリプトで、XServe インレットの周囲センサー温度を読み取ります。
#!/bin/bash
/Users/admin/TemperatureMonitor.app/Contents/MacOS/tempmonitor -f -a -l | grep AMBIENT > /tmp/temperature.txt
filecontent=( `cat "/tmp/temperature.txt" `)
temp1=`echo "${filecontent[3]} * 10 "|bc | sed 's/[.].*//'`
temp2=`echo "${filecontent[10]} * 10 "|bc | sed 's/[.].*//'`
if (( $temp1 >= 900 || $temp2 >= 900 )); then
EMAIL="network.services@domain.com"
SUBJECT="MAIL01 INLET TEMPERATURE EXCEEDED!"
mail -s "$SUBJECT" "$EMAIL" < /tmp/temperature.txt
fi
今日の初めに、/tmp に書き込むのではなく、「一時」ファイルをローカル ディレクトリに配置して、いくつかの iBook で実行できるように改良しました。
#!/bin/bash
# define output text file
OUTFILE='/Users/macadmin/batterysensortemp.txt'
# define email headers
SUBJECT="BATTERY TEMPERATURE EXCEEDED!"
RECIPIENTS="admin@domain.net"
# get the current battery sensor temperature and save it to a text file
/Users/macadmin/TemperatureMonitor.app/Contents/MacOS/tempmonitor -a -l | grep -i BATTERY > $OUTFILE
filecontent=(`cat $OUTFILE`)
temp1=`echo "${filecontent[1]}"|bc | sed 's/[.].*//'` #echo $temp1
if (( temp1 >= 33 )); then
mail -s "$SUBJECT" $RECIPIENTS < $OUTFILE
fi
そこで、Linux、特に Xubuntu 12.04 に目を向けて、lm-sensors をインストールしました。「センサー」コマンドを実行すると、次のような出力が得られます。
acpitz-virtual-0
Adapter: Virtual device
temp1: +74.0°C (crit = +103.0°C)
temp2: +51.0°C (crit = +115.0°C)
temp3: +25.4°C (crit = +103.0°C)
以前は、小数点だけを処理する必要があったため、出力の各行を読み取った後、sed コードは次のようになりました。
temp1=`echo "${filecontent[1]}"|bc | sed 's/[.].*//'`
しかし、ここでは、+ 記号、度記号、大文字の C、および大文字の A の原因となっているものを取り除く必要があります。
temp1=`echo "${filecontent[1]}"|bc | sed 's/[+.°C].*//'`
しかし、私はエラーが発生しています:
(standard_in) 1: syntax error
(standard_in) 1: illegal character: \302
(standard_in) 1: illegal character: \260
必要な出力、つまり 740、510、および 254 を取得するには、sed スクリプトに何を入力する必要がありますか? それとも、独自の温度センサー通知スクリプトを作成するのを忘れて、何か他のものを見つける必要がありますか (最終的にはそれが目的なので)。
更新: ここでのフィードバックの一部を基に、Sabayon 13.04 を実行している自宅のラップトップで新しいファイルをゼロから作成しました。
#!/bin/bash
# define email headers
SUBJECT="LAPTOP SENSOR TEMPERATURE EXCEEDED!"
RECIPIENTS="john@net.net"
temp1=`sensors | grep -i temp3 | grep -o '+[0-9.]\+' | sed '1~2!d; s/+//'`
temp2=`echo "$temp1 * 10" | bc | sed 's/[.].*//'`
if (( temp2 >= 330 )); then
echo "EMAIL ALERT TRIGGERED!"
#mail -s "$SUBJECT" $RECIPIENTS < $OUTFILE
fi
変数 temp1 は 24.0 (℃) の結果を取得します。次に、これを 10 倍して temp2 を 240 とし、それを 330 と比較すると、温度が低いため何もトリガーされません。これは、変更なしで Xubuntu でも機能しました。ガベージ文字で発生していた問題は、仕事で使用している Xubuntu システムではなく、Windows 8 の Putty に起因する可能性があると思います。ヘルプとポインタをありがとう!