Linux では、簡単な Shell コマンドで現在のダイヤルアップインターフェースの IP を取得し、指定したメールアドレスへ送信できます。以下の例は、ADSL ダイヤルアップ後に ppp0 インターフェースが作成される場合に適しています。
NOW_IP=`/sbin/ifconfig ppp0 | grep inet | awk {'print $2'} | cut -f2 -d:`
echo $NOW_IP | mail -s "IP" your@emailaddress
各部分の意味は次のとおりです。
ifconfig ppp0:ppp0インターフェース情報を表示する。grep inet:IP アドレスを含む行を抽出する。awk {'print $2'}とcut -f2 -d::IP アドレスのフィールドを取り出す。mail -s "IP" your@emailaddress:IPをメール件名として、結果を指定したメールアドレスへ送信する。
システムで新しい ip コマンドを使用している場合は、次の書き方で ppp0 の IPv4 アドレスを取得することもできます。
NOW_IP=$(ip -4 addr show ppp0 | awk '/inet / {print $2}' | cut -d/ -f1)
echo "$NOW_IP" | mail -s "IP" your@emailaddress
使用前に、ローカルマシンからメールを正常に送信できることを確認してください。まず次を実行できます。
echo "test" | mail -s "mail test" your@emailaddress
メールを受信できない場合は、まず mail コマンドが存在するか、またローカルマシンのメール送信サービスが正しく設定されているかを確認する必要があります。
ADSL ダイヤルアップの場合は、上記のコマンドを /etc/ppp/ip-up.local ファイルの末尾に追加して、ダイヤルアップが成功するたびに自動実行させることができます。
vi /etc/ppp/ip-up.local
保存後、スクリプトに実行権限があることを確認します。
chmod +x /etc/ppp/ip-up.local
定期的に実行することもでき、その場合はスクリプトを crontab のスケジュールタスクに追加します。たとえば 10 分ごとに実行する場合は次のとおりです。
*/10 * * * * /path/to/send-ip.sh
具体的な設定については、CentOS でルーターの外部 IP を定期的に指定メールアドレスへ送信するを参照してください。
