2011年5月17日火曜日

小出しに知らされる不都合な事実

 福島第一原発の1号機は炉心溶融が濃厚、さらに2号機、3号機でも炉心溶融している可能性が高まったとか。

 今になって初めてわかったような言いぐさだが、それはちょっと違うのではないか。長時間にわたり原子炉の冷却電源が断たれている間に炉心溶融が進んだということだ。津波を受けた後、冷却電気系統が絶たれ回復までに長い時間を要していたことは既に報道されている。ならば、その時点で炉心溶融していることも想定できたはずだ。

 しかし、地震後1週間前後の東電や原子力保安院、あるいはマスメディアに登場した原子力の専門家が示したのは、原子炉再使用の可否を逡巡して海水注入を躊躇する姿だった。

 本当に原子炉が再使用できると楽観していたとしたら、今となってはその知見や技術をもう信じることができない。その時点で「炉心溶融」の情報を発したときの社会騒乱を防ぐための情報操作だとすれば、それは一つの政治判断かと思うが、それならば私たちは、今後政府筋から発表される情報はそいうバイアスを織り込んで行動しなければならない。

 とんでもないことが起こっているのに、不都合な情報が小出しにされることにより、私たちの感覚は相当悪慣れしてしまっている。怖いことだ。

2011年5月16日月曜日

シェルスクリプトとcrontabでメール定時送信 on MacOS X

仕事上で、会議のリマインダーメールやメールマガジンを定時送信する必要があったので、ネットの情報を参考に、MacOSX上で動くシェルスクリプトを書いてみた。

環境は、MacOSX 10.5 シェルはMac portのzsh です。

1.1行目にSubject: を記入し、2行目以降にメール本文を記述したテキストファイルを用意
  このファイルが、スクリプト2行目の mailfile= にあたります。
2.宛先メールアドレスを記入したテキストファイルを用意(1行1アドレス)
  このファイルが、スクリプト3行目の listfile= にあたります

crontabでスケジュールするためには、1.2.のファイルや、コマンドはフルパスで書いた方が良いようです。

メールを送るコマンドは、普通 mail コマンドを使うらしいですが、私の普段使いのメーラーのmuttは、mailコマンドと同じような使い方ができます。muttは普段使いしているので、smtp設定は済んでいるしているし、送信記録も普段通りに残るので便利です。
mutt もmacport からインストールしたものです。
行頭の番号は目安なので、実際に書くときは省いてください。
======== ここから ========
01 #!/bin/sh
02 listfile="[fullpath]/[listfile_name]"
03 mailfile="[fullpath]/[mailfile_name]"
04
05 if [ ! -f $listfile ]; then
06 echo "Recipient list file $listfile does not exist.."
07 exit 1
08 fi
09
10 if [ ! -f $mailfile ]; then
11 echo "Mail body file $mailfile does not exist.."
12 exit 1
13 fi
14
15 subject=`/usr/bin/head -n 1 $mailfile | /opt/local/bin/nkf -m`
16 for to in `cat $listfile`
17 do
18 /usr/bin/tail -n +2 $mailfile | /opt/local/bin/nkf | /opt/local/bin/mutt -s "$subject" $to
19 done
20 exit

======== ここまで ========

上記を保存して、
chmod コマンドで、実行権限を与えておきます。

次に、 crontab でスケジューリングします。
送信スクリプトのファイル名は、autosend.sh とします。
送信できなかった場合の原因をわかりやすくするために、実行ログや、エラーログが残るようにします。
実行ログは、>>[fullpath]/[filename]
エラーログは、 2>>[fullpath]/[filename]

例えば、5月16日午前10時にメールを送信する設定は
======== ここから ========
% crontab -e

00 10 16 05 * /opt/local/bin/zsh /[fullpath]/autosend.sh >>$HOME/log/exec.log 2>>$HOME/log/error.log
======== ここまで ========

色々試したのだけど、スクリプトのパスの前に普段使っているシェルを指定するとうまくいきました。指定しないと環境変数の関係か、日本語文字コードの変換がうまくいかず、メール本文が文字化けしました。

OSの日本語環境変数、シェルの日本語環境変数、muttの日本語設定の組み合わせなどで、
スクリプトの中にnkfコマンドが必要だったり不要だったり、nkfオプションが違ったりしました。

何せ、日本語メールの文字コード設定は複雑です。上記も、何回かの実験で検証しただけで、日本語文字コードを完全に理解した上で書いているわけではないので、予めご了承を。


ありがたく参考にさせてもらった情報
http://shikabo.ddo.jp/wp-content/uploads/mailsendsh.txt
http://d.hatena.ne.jp/anmino/mobile?date=20100407