2011年2月11日金曜日

AtermWR7870SブロードバンドルータのIPアドレスを取得する

ルータのアドレスはそんなに変更する事はないが、出来れば自動で取得したい。
ルータのアドレスがデフォルトゲートウェイアドレスになるのだから、
Windowsのコマンドipconfgをsubprocess.Popen()で開いて情報を取得する。

AtermWR7870Sルータの説明書を見てみたら、http://web.setup/ でルータに接続できるようだ。
.setup のトップレベルドメインなんて無いのだからDHCPでDNSサーバーアドレスもルータに割り当てられて、
web.setup を問い合わせた時にルータに横取りされてルータ自身のIPアドレスが返されるのだろう。
当然ながら、例えばGoogle Public DNSを設定するとweb.setupには繋がらなくなる。

# -*- coding: utf-8 -*-
# ipconfig.py 2011.2.10

import subprocess

def get_default_gateway():
    p = subprocess.Popen("ipconfig", stdout=subprocess.PIPE)
    output = p.communicate()[0]
    for line in output.splitlines():
        if "Default Gateway" in line:
            print line
            return line.split(":")[1].strip()
    return None

if __name__ == "__main__":
    ip = get_default_gateway()
    if ip:
        print u"デフォルトゲートウェイアドレス: " + ip

    import socket
    ip = socket.gethostbyname("web.setup")
    print ip

0 件のコメント: