lost and found ( for me ? )

How to check your current global IP you w/ Python

<-- private LAN -->
PC -------------------- Home router --- global IP    Internet

固定じゃないので、たまにグローバルIPがかわる。
global IP をチェックする方法。
最終的には、この結果をgmailに送信したいなーと思っているが、gamilへの送信方法はあとで。
DDNSを使用してもいいんだけど。。。これまた別の機会で。

下記サイトにアクセスすると現在使用しているグローバルIPをチェックできる。
http://checkip.dyndns.org

wget で上記URLをたたけばわかるけど、pythonで作成してみた。

・wget

-O - で標準出力に表示
root@hat1:~# wget http://checkip.dyndns.org -O -


・python

まずはインタラクティブモードで動作チェック。
HTMLタグを re モジュールで削除。
root@hat1:~# python
Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import httplib
>>> import re
>>> conn = httplib.HTTPConnection("checkip.dyndns.org")
>>> conn.request("GET","/index.html")
>>> r1 = conn.getresponse()
>>> print r1.status
200
>>> data1 = r1.read()
>>> print data1
<html><head><title>Current IP Check</title></head><body>Current IP Address: x.x.x.x</body></html>

>>> p = re.compile(r'<.*?>')
>>> print p.sub('',data1)
Current IP CheckCurrent IP Address: x.x.x.x

>>>


ファイルへ書き込み
>>> f = open('text.txt', 'w')
>>> str = p.sub('', data1)
>>> f.write(str)
>>> f.close()


ファイルに出力された
root@hat1:~# cat text.txt
Current IP CheckCurrent IP Address: x.x.x.x


スクリプトはこんな感じかな。
#!/usr/bin/env python

import httplib
import re

conn = httplib.HTTPConnection('checkip.dyndns.org',80,timeout=10)
conn.request("GET","/index.html")
r1 = conn.getresponse()
data1 = r1.read()
p = re.compile(r'<.*?>')
str1 = p.sub('', data1)
f = open('my_IP.txt', 'w')
f.write(str1)
f.close()


スクリプトを実行したディレクトリに my_IP.txt というファイルで結果ファイルができる。
root@hat1:~/my_work# ./get_my_global_IP.py

root@hat1:~/my_work# cat my_IP.txt
Current IP CheckCurrent IP Address: x.x.x.x

2 comments:

  1. sedを使うとこんな具合に。。

    wget http://checkip.dyndns.org -q -O - | sed 's/^.\+Current IP Address: \([0-9.]\+\).\+$/\1/'

    ReplyDelete
  2. コメントありがとうございます。

    おー、IPアドレスだけ取り出せますね。
    アドバイスありがとうございます。

    root@hat1:~# wget http://checkip.dyndns.org -q -O - | sed 's/^.\+Current IP Address: \([0-9.]\+\).\+$/\1/'
    x.x.x.x

    awkを使うとこんな具合に ^^_^/

    root@hat1:~# wget http://checkip.dyndns.org -q -O - | awk '{print $6}' | awk -F '<' '{print $1}'
    x.x.x.x

    ReplyDelete

Note: Only a member of this blog may post a comment.