コンテンツ




利用者へのお知らせ方法

(1)概要

Sun Ray の利用者へのお知らせ方法を紹介します。

(2)背景

  • 利用者が多種に渡る場合、utwall (/opt/SUNWut/sbin/utwall) だけではなかなか運用が難しいと考えています。
  • 例えば昨今事務職員はパートの方が多く、この方々の出勤時間がばらばらなので utwall でお知らせする時間にセッションを持っているとは限らないことです。
  • 学生にいたっては、ログインする時間が把握できません。
  • そういうことも考えて、ログイン時にまずはお知らせして、保守時間の直前でログインしている方達向けに utwall でお知らせするのが良いかと考えたしだいです。
  • メールでお知らせする場合、他のメールに埋もれてしまう可能性があるのであまり現実的では無いと考えます。

(3)Sun Ray の利用者へのお知らせ方法

(3-1)Sun Ray にログインしている利用者へのお知らせ方法

保守日のお知らせを当日の決まった時間に、下記スクリプトを実行して各利用者の画面に表示するようにしています。

#!/bin/sh
export LANG
LANG=ja_JP.UTF-8
/opt/SUNWut/sbin/utwall -d -t "本日は保守日です。\n
12時過ぎにはすみやかにログアウトしてください。" ALL

但し、これではその時間にSunRayにログインしていることが条件となりますので、緊急のお知らせには向いてますが定期的なお知らせには不向きで はないかと考えています。
また、上記のようにきちんと環境変数を設定しないと日本語が文字化けしてしまいます。

(3-2)ログイン時にお知らせを出す方法

(3-2-a)gnome のデフォルトセッションに追加する方法

gnome の初期起動セッション(/usr/share/gnome/default.session)に、以下のような zenity を使ったお知らせを使うようにしてみました。

[Default]
num_clients=5
~~~~~~~~~~~~~~~~~
5,id=default5
5,Priority=60
5,RestartCommand=/usr/bin/zenity --text-info --filename=announce.txt --width=500 --height=300

こちらはannounce.txtにお知らせ文を書くことになるので、保守性も良いと思われます。
これで実際にログインしてると、とりあえず表示はされるのですが、ログインに時間がかかるようになってしまいました。

そこで、別の方法として dtlogin の初期起動スクリプトに組み込むことを行ってみました。

(3-2-b)dtlogin の初期起動スクリプトに組み込む方法

dtlogin では、以下のディレクトリにスクリプトを置くと、ログイン時に実行される仕様となっています。

/usr/dt/config/Xsession.d/
  • 命名規則は「1000以上の数字.名前」です。

今回は後から追加するスクリプトなので、2001.welcome としました。
/usr/dt/config/Xsession.d/2001.welcome スクリプトファイルの中身は以下の通りです。

#!/bin/sh
/usr/bin/zenity --text-info --filename=/etc/announce.txt --width=500 --height=300 &

/etc/announce.txt がお知らせ文のファイルです。
今回はスクリプトが順番に実行されるので、zenity 実行を fg で行ってしまうとそこで停止してしまいます。
スクリプト内で & を付けて bg で起動しています。

但し、この方法では gnome が起動する前にメッセージが表示されてしまう欠点があります。
気にしなければ良いのですが、あまり見ていて気持が良くありません。
そこで、以下のように修正しています。
上記 2001.welcome シェルスクリプトを以下に変更します。

#!/bin/sh
/etc/welcome.sh &

上記のように起動スクリプトでは、welcome シェルスクリプトを bg で呼びます。
/etc/welcome.sh は以下のようにします。

#!/bin/sh
sleep 5 ; /usr/bin/zenity --text-info --filename=/etc/announce.txt --width=500 --height=300

zenity 起動前に sleep 5 で少し時間を待ってからお知らせを表示します。
こちらの Sun Ray では、sleep 5 で丁度ログイン完了時にお知らせが表示されました。
コンソールログインでは sleep 10 ぐらい必要な様です。

お知らせを起動しているのは単なるシェルなので、もう少し工夫すれば、曜日毎に別のメッセージを表示することも、特定日だけ特定のメッセージを表示 することも可能になるかと思います。

(4)参考