web-dev-qa-db-ja.com

グローバルIPが変更されるたびに電子メールを送信するサーバースクリプト

静的なグローバルIPを持たないWebサーバーをセットアップしています。それは私の実家にあり、グローバルIPが変更されたときにSSHで接続することはできません。グローバルIPは、ルーターを再起動するたびに変更されます。これは、月に1回のように発生します。

グローバルIPが変更されるたびにメールを送信するスクリプトが必要です。したがって、DNSを更新して、Webサイトが再び機能するようにすることができます。

Ubuntuのスクリプトについては何も知りませんが、JavaとPHPの基本は知っています。

コンピューター:Ubuntu 13.10サーバー、iMac G4 Globe。

6
Alvar

動的DNS更新スクリプト/ツールの使用を検討しましたか?

例えば ddclient Debian/Ubuntuパッケージとして入手可能。

DNSゾーンまたはを更新し、ダイナミックDNSレコードを更新して(sshで入力可能)、カスタムスクリプトを実行してメールを送信できます。

7
AnFi

this answer のコードに基づいて、デバッグ用のオプションをいくつか修正および追加しました。

メールサーバーを設定し、crontab -eを使用して、これを取得して現在のIPアドレスをメールで送信する必要がありました。また、スクリプトファイルを実行可能にし、ユーザーがスクリプトを配置したフォルダーに対する読み取りおよび書き込み権限を持っていることを確認する必要があります。

#!/bin/bash
NOWIPADDR="/home/scripts/nowipaddr"
GETIPADDR="Dig +short myip.opendns.com @resolver1.opendns.com"
LOG="/home/scripts/ip.log"
timestamp=$( date +%T )
curDate=$( date +"%m-%d-%y" )

if [ -f $NOWIPADDR ]; then
  if [[ `$GETIPADDR` = $(< $NOWIPADDR) ]]; then
    echo $curDate $timestamp " IP address check: " $(< $NOWIPADDR) >> $LOG
  else
    $GETIPADDR > $NOWIPADDR
    mail -s "Server IP" [email protected] < $NOWIPADDR
  fi
else
  $GETIPADDR > $NOWIPADDR
  mail -s "Server IP" [email protected] < $NOWIPADDR
fi
4
Jeffrey Stines

Cronから特定の時間に毎日実行する簡単なスクリプトを作成できます。

ファイル内の既存のIPを取得し、ifループを実行して、既存のIPで新しいIPをチェックします。両方のIPが同じままの場合、メールの送信をスキップできます。それ以外の場合、IPに変更がある場合、新しいIPでメールを送信する必要があります。

スクリプトを毎時、毎日、毎週実行できます。

NOWIPADDR="nowipaddr"
GETIPADDR="ifconfig.me"


    if [ -f $NOWIPADDR ]
    then
       if [ `cat $NOWIPADDR` = `curl $GETIPADDR` ]
       then
           echo "no change in IP."
       else
           curl $GETIPADDR > $NOWIPADDR
           mail -s "IP is $GETIPADDR" [email protected]
        fi
    else
        curl $GETIPADDR >> $NOWIPADDR
    fi
3
OmPS

これを使用して、1日1回IPアドレスを確認しています。

wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' > ~/myip

静的IPアドレスを持つLinuxコンピューターがある場合は、〜/ myipをrcpするだけです。

そうでない場合は、sendEmailと呼ばれる便利なコマンドラインツールを常に使用できます(sendmailと混同しないでください)。このツールを使用すると、1行のコマンドでメールを簡単に送信できます。 http://caspian.dotconf.net/menu/Software/SendEmail/

次の行に沿って何かを書くことができます。

myip=`wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`<br>
sendEmail -f [email protected] -m $myip 
2

少し古いスレッドですが、外部IPの変更を監視する方法をGoogleで検索すると、リストの上位に表示されます。

役に立つかもしれない代替オプションとして、外部IPアドレスの変更を監視するように設計されたpythonスクリプトを作成しました。現在、「現在の」外部IPアドレスをファイルに保存し、実行時に新しいIPアドレスを取得してから、古いIPアドレスと照合します。変更が検出された場合にメールで通知するように設計されています。

Cronjobとして実行するように設計されており、単独ではバックグラウンドデーモンとしては実行されません。

Githubリポジトリへのリンクは次のとおりです。 https://github.com/begleysm/ipwatch

うまくいけばそれが役立つ!

0
begleysm