• ユーザー登録
  • |
  • ログイン


頭脳外部メモリー 「独学で趣味を満喫」 SINCE 2008/3

Linux 自宅サーバー PICマイコン PICC-LITE Windows 車 関係の色々な趣味の記録を脳内では覚えられないので此処に保存!! ・・・って言うか、すでに忘れてしまって書けないかも・・・特に作った時に起きた問題点を書いておきたいのだが・・・ σ(^◇^;)ヒヤアセ

  • Home
  • plugin & js
  • sample
  • site map
  • Home » Archive by category '自宅サーバー » Vine Linux » DiCE'

2008

3/6

DiCE IPアドレスが更新されると自動でメール通知

Last modified: 2008年5月9日 (金)  am 9時01分
Posted by jun  Published in DiCE

▼

DiCEによってIPアドレスが更新された時にメールが欲しい・・・・と思い始めた。 思い立ったら即行動

・・・・ということで、どうやればいいか考える、まぁ~perlとかシェルスクリプトだよね・・・ なんて書いていますが、まったく知識なし!!!まずはPerlをやってみたいということで・・・ ググルンで独学開始!!
続きを読む ≫
なるほどね~~・・・・・・わからん!!! う~~ん、ヤフオクでそれ関係の本を探したが・・・無い っていうか、見て買わないとわからんでしょってことで、本屋へGO・・・ う~~ん、多少かじっているC言語(独学超初級レベル)に似てるから何とかなるようなならないような・・・ C言語はコマンドの違いに悩まされたなぁ~~・・・・

まぁ~実際にやりたいことを書き出す

1. IP更新があったか確認する

2. 変化ない場合は特に何もしない
・・・logくらいとるか?・・・動作確認のため1日1回くらいはメール送信?

3. IPが更新されたらメールを送信・・・せっかくだから出来るだけ詳しく送りたい

・・・ こんなところか・・・最初は先頭の部分だけだったのだが、やってるうちに後ろのおまけが増えていきました・・・(^∀^2)、

で、Perlですがネットで調べたりフリーのフォームやメルマガのCGIなどのを参考にがんばってみましたが・・・IP更新があったか確認のところがどうも出来ない・・・CPANのFile::Compareでやろうとしたのだが・・・どうやってもインストールできない・・・Linuxで使えないのかな?ネットで検索するもほとんど出ない・・・・(検索が下手??) そこで仕方ないので、Perl覚えたかったけど、シェルスクリプトに変更

・・・w( ̄o ̄)w オオー! 結構ネット上にあるではないですか~~~これはいけるかも!! C言語でもそうだったが自分がしたいことは大体、条件分岐のあたりを覚えればやりたいことはほぼ出来るはず・・・・

まずは、IP更新があったか確認する方法はDiCEのlogがわかりやすいかな?? で、コマンドは?・・・やっといいのが探せたよ~!!その名は diff 2個のファイルの差を表示してくれるなんてステキだ!!これなら起動時にまずDiCEのlogをどっかにコピーしてからはじめれば・・・・(゜゜)(。。)(゜゜)(。。)ウンウン それで条件分岐してメール送信・・・それがまた問題だ・・・・・・・・ で、あ~でもない、こ~でもない・・・ネットを検索し実際にやってみての繰り返し・・・・試行錯誤でがんばること、ほぼ丸1日・・・・出来たのはのはこんな感じ

-----------------------------------------------------------------------------------------------------------------
#!/bin/sh


######### DiCE IPアドレス更新自動メールスクリプト #########

LOG='/var/log/DiCE/renw.log'
#これが、シェルスクリプトのログ
RENW='/backup/log/DiCE_renw.log'

#こっちが、更新された時のログの差、そしてメール本文になる

declare -i CNT
declare -i CNT24
declare -i ERROR
#declare -i で、これは数値ですよ~と教えてあげるそうです。探すの苦労したよ・・・

CNT='1'
CNT24='1'
ERROR='1'


rm -f /usr/local/bin/DiCE/log/renw.log
#サイズが大きくならないように再起動したとき古いログを削除
rm -f /backup/log/DiCE_renw.log

#メール本文が長いと(`×´)丿ウザイ!!ので再起動時毎回削除
echo `date`       再起動 >> $RENW 2>&1

#再起動しました表示を保存・・・これで、メール送信時BODY無いよERROR回避 #なるほど >> $RENW 2>&1 こう書くと上書きされないのね・・・・ヽd´ι`bノ Oh・・・
#`date`こんなステキなものが!!これでいつ何時にがすべてわかる!!

rm -f /backup/log/DiCE.log

#再起動したときに再コピーしないと正しい差が取れないので、古いログを毎回削除
cp -f /usr/local/bin/DiCE/log/events.log /backup/log/DiCE.log
#そして、すぐにDiCEのログと比較するための初期状態のログを適当な所にコピー #なぜか強制上書きコピーが出来ないので削除してからコピーにしてみた・・・なんで?
echo `date`       再起動 >> $LOG 2>&1
#シェルスクリプトのログにも再起動した時間を記入


until [ "$ERROR" -eq '0' ];
#ココからメイン until は条件が偽である間処理を繰り返す(do~done間) ここでは、diff でエラーが出たときに終了する

do
sleep 600
#これのおかげで600秒(5分)に1度の実行になる その間CPUはお休み・・・・( - _ゞ ゴシゴシ (´0`)ゞファー
#最初はcronで実行しようとしていたが、それだと代入?した数値が毎回戻ってしまうので困りました・・・・/(-_-)ヽ   が、これで解決!!CPUにも負担もかからんし (⌒^⌒)b うん

diff /usr/local/bin/DiCE/log/events.log /backup/log/DiCE.log >> $RENW 2>&1
#ついに出ました主役の登場!!これで、DiCEのログと再起動した時コピーした初期のログを比較させ差があったら保存!!

case "$?" in
#条件分岐 最初は if でやったが case の方がよさそうなので?こっちにした
#ここで重要なのが"$?" この子です!!これは最後に実行したコマンドの終了ステータスらしいです・・・ってことで直前は diff なので diff の返り値は・・・

#0 全く変更がなかった。
#1 変更があった。
#2 何らかのエラーが起こった。

#なので下記になる・・・・・(笑)  

0)

#返り値が0の時 つまりIP変化なし・・・・
if [ "$CNT" -ge '12' ];

#せっかくだから if も使ってみたかった・・・・これで、5分×12回=1時間に1回ログを取る(まぁ~ちゃんと動作してるかの確認のため)  
then

echo `date`   IPアドレス変化なし >> $LOG 2>&1
CNT='1'
#CNTを1にリセット
if [ "$CNT24" -ge '24' ];
#さらに、ここで5分×12回×24回=24時間変化無しだったら・・・・  
then

echo `date`   IPアドレス24時間変化なし >> $LOG 2>&1
#ログ記録
cat $RENW|mail -s "DiCE IPアドレス24時間変化なしでした。" root
#メール送信・・・・ホントいらないんだけどIPあまり変わらないので寂しいので送信!! σ(^◇^;)ヒヤアセ
CNT24='1'
#CNT24を1にリセット
else CNT24=$(expr $CNT24 + 1)
#ココはちょっとつまずいた、ネットで探したのが count=`expr $count + 1` だったので最初これでやったらどうもうまくいかない、で他を探して成功・・・・ count=`expr $count + 1`の方がいっぱいあったのに・・・なんで?
fi else CNT=$(expr $CNT + 1)
#これは上もそうだが if の偽の方に来たら+1づつ加算・・・インクリメント・・・っていうんだっけ??( ̄ー ̄; ヒヤリ
fi
;;
1)
#返り値が1の時   つまり更新された時ですよぉ~~!!メインじゃないですかぁ~!!!・・・・
cat $RENW|mail -s "DiCE IPアドレス更新されました。" root
#これが今回1番のメイン!! ログの差の部分をrootにメールする う~ん見つけたときは嬉しかった (o^v^o)えへ
rm -f /backup/log/DiCE.log cp -f /usr/local/bin/DiCE/log/events.log /backup/log/DiCE.log
#これを忘れちゃいかん! 次回のためにDiCEログを再コピー
echo `date`   DiCE.log更新しました >> $LOG 2>&1
     echo `date`   IPアドレス更新されました >> $LOG 2>&1
#ログ記録
CNT='1'

#CNTを1にリセット
CNT24='1'
#CNT24を1にリセット  と言うことで更新があったら全て0からのスタート
;;
*)
#返り値がその他の時     つまり・・・・ diff エラーが出たときです 怖いですね~出て欲しくないですね~・・・
cat $RENW 0000|mail -s "DiCE diff エラーです・・・" root
#rootにメール送信
echo `date`   diff エラーです・・・ >> $LOG 2>&1
#ログ記録
CNT='1'
#CNTを1にリセット
CNT24='1'

#CNT24を1にリセット
ERROR='0'
# ・・・・・・・・・・ERROR を0にする つまりスクリプト終了・・・・
;;
esac
done
-----------------------------------------------------------------------------------------------------------------

※Windowsパソコンで作成したのですが、保存文字コード&改行コードも注意ですね。 文字化けで色々試しましたがEUCが良いみたい・・・・(゚゚;)\(--;)オイオイ

後はこれを適当な所において、/etc/rc.d/rc.local に記入して自動起動させれば完成!!

まぁ~初の作品なのでスマートではないです・・・・・(^∀^2)、 もっと知識があれば、もっとステキに出来るはずなのに・・・・(TOT)

ちゃんとした知識のある人が見たら笑われそうですが、ど素人と言うことで笑って許してください。 アドバイスがあったら是非教えてください~~~ ペコリ(o_ _)o))
とりあえず、テストは成功!!・・・・しかし、実際にはまだ更新された時がない・・・・ルーターの電源切ってみようかな~~  ̄m ̄ ふふ

素人意見としては、ネットで検索していて説明が少なかったので細かく書いて見たが・・・・・(`×´)丿ウザイ!! (( ( (ヽ(;^^)/逃げろ~・・・・・・(o_ _)oドテッ!

うざくないやつはこちら → DiCE更新確認スクリプト

・・・う~~ん、作り終わって思ったのだが、ココまですればDiCEやめて全て出来るような気がする・・・検索中に自分の使っているDNSの更新方法もIPアドレスの確認方法も見つけたし・・・・ま~いっか~~  (; ̄ー ̄川 アセアセ

追記・・・・その後、しばらくして久々にサーバー本体から、いじろうとしたら(普段はTeraTerm)問題発覚!!・・・なんと、スクリプト実行中のため何も入力できないじゃん!! TeraTermからは普段どおり使えてたので気づきませんでした・・・さて、こういう場合どうすればいいのでしょうか?・・・・・・・(゜_゜i)タラー・・・

追記・・・上記の問題解決・・・特に問題ないので、放って置いたのだが σ(^◇^;)ヒヤアセ 調べてみると非常に簡単でした。解決法は /etc/rc.d/rc.local に記入する時、下記のように・・・・
/root/DiCE_mail.sh &
読み込ませるスクリプト名の後に「&」を付けると、バックグランドで起動するんだって~ ひとつ賢くなったよぉ~・・・・皆さん知っているのだろうけどね・・・σ(^◇^;)ヒヤアセ

「20点」 まったく役に立たなかったよ 。。。・゚゚・(>Д<;)・゚゚・。。。。「40点」 ちょっとだけ役に立ったかな (T^T)「60点」 まぁ~まぁ~の記事だね v(^∀^)v「80点」 良い記事だけど、あとちょっと・・・ (ノ´▽`)ノオオオッ♪「100点」 探していたのはこの記事だ!! (*゚ o゚*) マジっすか!? (1 投票, 平均値/最大値: 2 / 5)
 
≪ 続きを隠す

人気度 : 10 %

no comment

▲


Previous Top

現在の訪問者数

サーチ

注意書き

当ブログの内容は管理人の覚え書がメインです。書き間違い勘違いもあるでしょう。なので、一切の責任を持ちません。各自の責任で行ってください。答えられることは、お答えします。
ペコリ(o_ _)o))

カテゴリ

    open all | close all

アーカイブ

    open all | close all

ページ

最近の人気記事

  • 「Prime95」 についての説明
  • P5K-E Q6600 オーバークロック
  • 「CrystalCPUID」 についての説明
  • BIOS USBの設定について
  • 「jQuery lightBox plugin」 設置説明 & 「wp-lightpop」 を 試す
  • 「jQuery thickbox plugin」 設置説明
  • 「jQuery Drop Shadow」 設置説明
  • Windows PC で SSH 其の壱 「Cygwin インストール編」 
  • 「jquery roundcorners canvas」 と 「jquery curvycorners」 の 設置説明
  • 「テキストエリア」 タグの中のコードの改行が消えてしまう問題解決・・・??

最近の評価記事

  • 「Highslide JS」 設置説明 java script 4 投票, 平均値/最大値: 5 / 54 投票, 平均値/最大値: 5 / 54 投票, 平均値/最大値: 5 / 54 投票, 平均値/最大値: 5 / 54 投票, 平均値/最大値: 5 / 5 (5 / 5)
  • 「Highslide JS」 「jun」 の設定 & 使い方 3 投票, 平均値/最大値: 5 / 53 投票, 平均値/最大値: 5 / 53 投票, 平均値/最大値: 5 / 53 投票, 平均値/最大値: 5 / 53 投票, 平均値/最大値: 5 / 5 (5 / 5)
  • SSL 無料 認証機関 (CA) StartCom 使用方法 3 投票, 平均値/最大値: 5 / 53 投票, 平均値/最大値: 5 / 53 投票, 平均値/最大値: 5 / 53 投票, 平均値/最大値: 5 / 53 投票, 平均値/最大値: 5 / 5 (5 / 5)
  • 「jQuery thickbox plugin」 設置説明 2 投票, 平均値/最大値: 5 / 52 投票, 平均値/最大値: 5 / 52 投票, 平均値/最大値: 5 / 52 投票, 平均値/最大値: 5 / 52 投票, 平均値/最大値: 5 / 5 (5 / 5)
  • 「Highslide JS」 カスタマイズ 各種設定方法 2 投票, 平均値/最大値: 5 / 52 投票, 平均値/最大値: 5 / 52 投票, 平均値/最大値: 5 / 52 投票, 平均値/最大値: 5 / 52 投票, 平均値/最大値: 5 / 5 (5 / 5)
  • prototype.js と jQuery の競合(コンフリクト)解決! & 共存方法 2 投票, 平均値/最大値: 5 / 52 投票, 平均値/最大値: 5 / 52 投票, 平均値/最大値: 5 / 52 投票, 平均値/最大値: 5 / 52 投票, 平均値/最大値: 5 / 5 (5 / 5)
  • PICに興味を持つ・・・・必要なものは? 1 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 5 (5 / 5)
  • Wordpress カスタマイズ・・・のための 「関数」 1 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 5 (5 / 5)
  • 「jQuery Drop Shadow」 設置説明 1 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 5 (5 / 5)
  • 「FCK editor」 で phpコードを使用する方法 1 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 51 投票, 平均値/最大値: 5 / 5 (5 / 5)

最近の更新記事

  • SSL 無料 認証機関 (CA) StartCom 使用方法
       更新日: 2008年6月26日
  • 「Zen Cart」 設置説明 (PHP5 MySQL5 UTF-8 対応版)
       更新日: 2008年6月19日
  • 「X Window」 終了時のフォント読込エラー対策
       更新日: 2008年6月13日
  • 「X Window」 5ボタンマウス 設定方法
       更新日: 2008年6月13日
  • 「Vine Linux」 インストール説明
       更新日: 2008年6月12日

メタ

  • 登録
  • ログイン
  • Main Entries Rss
  • Comments Rss
Today: 13
Yesterday: 397
Total: 76096 since 2008/4/14

最新の投稿

  • SSL 無料 認証機関 (CA) StartCom 使用方法
  • 「Zen Cart」 設置説明 (PHP5 MySQL5 UTF-8 対応版)
  • 「X Window」 5ボタンマウス 設定方法
  • 「X Window」 終了時のフォント読込エラー対策
  • 不要サービス 停止
  • ルータ(BBR-4HG) 「IPアドレス変更」 & 「アドレス変換(ポート解放)」 設定方法
  • 「DDNS(Zoneedit)登録・設定」 & 「DNSサーバ設定」
  • 「Highslide JS」 「jun」 の設定 & 使い方
  • ワイヤレスキーボードで 「setkeycodes」 「e05a」 & 「e059」 表示 対策方法
  • 起動中の画面の解像度 変更方法 「GRUB」 設定

最新のコメント

  • jun in 「DDNS(Zoneedit)登録・設 」 & 「DNS…
  • jun in 「Shadowbox」 設置説明 ja va script
  • 早川 in 「Shadowbox」 設置説明 ja va script
  • jun in 「Zen Cart」 設置説明 (PHP5 MySQL5 UTF-8…
  • 岸本 in 「Zen Cart」 設置説明 (PHP5 MySQL5 UTF-8…
  • 岸本 in 「Zen Cart」 設置説明 (PHP5 MySQL5 UTF-8…
  • GEST in 「DDNS(Zoneedit)登録・設 」 & 「DNS…
  • WPにカウンターを設置 | (… in 「counterize II」 を設置してみた WP プ…
  • kh2003 in 「Shadowbox」 設置説明 ja va script
  • jun in 「Shadowbox」 設置説明 ja va script
© 2008 頭脳外部メモリー 「独学で趣味を満喫」

Valid XHTML | Valid CSS 3.0
Powered by Wordpress
展望台 最上階
DiCE IPアドレスが更新されると自動でメール通知 1階
RSS RSSで購読
メールで購読