- - PR -
シェルにmailのサブコマンドを書く方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-08-03 13:24
シェルスクリプトでメールを飛ばす場合について質問です。
ディスクの容量監視をするためにdf -kの結果をメールで飛ばしたいと思っています。 ヒアドキュメントを使う方法を調べ以下のようなスクリプトを書いたのですが件名のところがうまく入らず 本文に記載されてしまいます。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #!/bin/sh mail hoge@hoge<<END Subject: `hostname`_`date` `df -k` END ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^~~~~~~ ftpやmailなどサブコマンドがあるコマンドを使用する場合は どのように書くべきでしょうか? サブコマンド シェル mailなどで検索し いろいろ調べたのですが情報が見つからなくて困っています。 ご教授ください。 |
|
投稿日時: 2004-08-03 13:51
こんにちは、dcharさん
私が以前にsquidのログを飛ばすのに作った時はSubjectに日のみを入れたのですが、以下でやりました DAY=`date +%d` MAIL=hoge@example.ne.jp SUB=squid_$DAY mail -s $SUB $MAIL ただ、dateだけだとブランクが入るので、この方法だと"$SUB"としてやる必要があるかと思います #実は他にもgrepとかかましてあるけど、そこは関係ないので省略 |
|
投稿日時: 2004-08-03 15:06
RedHat Linux7.3 の /bin/mail だとこんな感じでしょうか。
------------- ここから ------------------------------ #!/bin/sh SUBJECT="`hostname`_`date`" /bin/mail -s "$SUBJECT" hoge@hoge<<END `df -k` END --------------------- ここまで ------------------------ Solaris8 の /usr/bin/mail だと dchar さんのシェルスクリプトで Subject: ホスト名_Tue Aug 3 13:52:30 JST 2004 となりました。 |
|
投稿日時: 2004-08-03 20:18
レスありがとうございます。
私もsolaris8で試したのですがNeXTさんのようにはならなかったのですよ。 なんでだろう?? で自己解決なのですがsendmail -tで希望していたような動作を実現できました。 #!/bin/sh adad=差出メールアドレス cat <<END | /usr/lib/sendmail -t Return-Path: <${adad}> From: `hostname`_admin To:送信先メールアドレス Subject: [DailyCheck]`hostname`_20`date +%y%m%d` `df -k` END とりあえず解決できました。ありがとうございます。 PS.明日はFTPのシェルをかかないとなりません。 |
|
投稿日時: 2004-08-03 20:43
解決したようですが、
> 私もsolaris8で試したのですがNeXTさんのようにはならなかったのですよ。 > なんでだろう?? ロケールがja_JP.PCKだったとか。 > ヒアドキュメントを使う方法を調べ以下のようなスクリプトを書いたのですが件名のとこ > ろがうまく入らず本文に記載されてしまいます。 こういうときは、送付されたメールのソースを見るのが良いです。 |
|
投稿日時: 2004-08-04 00:23
> 私もsolaris8で試したのですがNeXTさんのようにはならなかったのですよ。
> なんでだろう?? /usr/bin/mail -> OK と /usr/ucb/mail -> NG の違いではないでしょうか。 mail hoge@hoge<<END の mail コマンドを絶対パスで記述してみるとよいか もしれません。もしくは which mail でどちらが先に表示されるか,でしょうか。 ちなみに /usr/bin/locale で確認してみましたがLANG 等すべて C でした。 |
1