静的にアドレスを割り当ててもいいが、出来れば自動化したい。
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 件のコメント:
コメントを投稿