静的にアドレスを割り当ててもいいが、出来れば自動化したい。
UPnPのブロードキャストとかARPで探すのが正しい方法なんだろうけど、
ブロードバンドルータのAtermWR7870SのUPnPの状態のページにはこのように、
IPアドレス | MACアドレス |
192.168.1.3 | 00:A0:B0:00:00:00 |
BeautifulSoupを使ってスクレイピングしてMACアドレスからIPアドレスを取得してみた。
# -*- coding: utf-8 -*- # wr7870s.py 2011.2.7 import base64 import urllib2 from BeautifulSoup import BeautifulSoup def wr7870s_ip_from_mac(mac_adrs, host="192.168.1.1", user="admin", passwd=""): url = "http://" + host + "/info_upnp.html" req = urllib2.Request(url) req.add_header("Authorization", "Basic " + base64.encodestring(user+":"+passwd)) response = urllib2.urlopen(req, timeout=5) data = response.read() soup = BeautifulSoup(data) for tr in soup('tr', bgcolor="THISTLE"): if mac_adrs == tr.contents[3].string.strip(): ip_adrs = tr.contents[1].string.strip() return ip_adrs return None if __name__ == "__main__": mac_adrs = "00:A0:B0:00:00:00" # ネットワークカメラのMACアドレス passwd = "passwd" ip = wr7870s_ip_from_mac(mac_adrs, passwd=passwd) print ip,mac_adrs
0 件のコメント:
コメントを投稿