動作中のscreenでコマンドを実行するには、screenの-Xオプションを使えば簡単に実現できますね。
screen -X bell_msg "New Mail New Mail!"
screen -X bell
これで現在起動しているscreen のWindowの右隅、ちぃっちゃくメッセージが5秒間出て消えます。
screenのセッションが現在のホスト上に複数立ち上がっていると-Xオプションがエラーを返します。
screenは、セッション名(sessionname)、WindowID(番号またはタイトル)で状態を管理しています。セッション名は、pid.tty.hostです(pidは省略可)。現在のホスト上にあるscreenのセッションリストは、screen -lsで表示されます(存在しない場合1を返します)。特定のセッションを選択してコマンドを送信するためには-Sオプションでセッション名を指定します。
screen -S pid.tty.host -X bell_msg "New Mail New Mail!"
sceen -S pid.tty.host -X bell
すべてのセッションにメッセージを送るには、
[hogemailyo]
#!/bin/csh -f
foreach s (`screen -ls|awk '{print $1;}'|grep "\.")
screen -S $s -X bell_msg "$*"
screen -S $s -X bell
end
こんな感じになります。
私はfetchmailが新着メールを受け取ったとき、procmailへ振り分けたりしていますので、
[procmail_with_screen_bell.shスクリプト]
#!/bin/csh -f
cat | procmail
foreach sss (`screen -ls | egrep '[0-9]+\..+\..+' | awk '{print $1}'`)
screen -S $sss -X bell_msg "New Mail Comes!"
screen -S $sss -X bell_msg
end
のようなprocmailのラッパ・スクリプトを作っておいて、fetchmailから新着メールを渡すように、.fetchmailrcのmdaの部分を
[.fetchmailrc内]
mda "procmail_with_screen_bell.sh"
としてしまいます。
これで、
fetchmailが新着メールを受け取り、procmail_with_screen_bell.shスクリプトへ渡す
procmail_with_screen_bell.shがprocmailへメールを渡す
procmail_with_screen_bell.shがscreenへメッセージを表示する
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV5zVn09TeROcuEx-OwaSLxx9k3dcm38viYkI2N0DEI3yhM2wNLVvPvhSGHBqpt1g_rw4TmrDaJNKg7G9nk_LouqWszO8oDuFbTikAfd5AIniN_1WCbZs8HjRNDg37Cgp04Qkq-pta1ujL/s320/screen_bell.bmp)
メールが届くと、左下にちぃッちゃく、"New Mail Comes!"と表示されますねぇ。
0 件のコメント:
コメントを投稿