1. 程式人生 > >DIY個人智慧家庭閘道器—— python篇之獲取路由器外網地址

DIY個人智慧家庭閘道器—— python篇之獲取路由器外網地址

免費的DDNS域名服務有時候重新整理不及時,解析不到路由器的IP,就可以採用這種方法來解決

#!/usr/bin/env python
# -*- coding: utf-8 -*- 
import socket  
import fcntl  
import struct  
import subprocess
import jpush
from time import sleep

SIOCGIFADDR = 0x8915  
    
def get_ip_address(ifname):  
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  
    try:
        ip = socket.inet_ntoa(fcntl.ioctl(  
            s.fileno(),  
            SIOCGIFADDR,  
            struct.pack('256s', ifname[:15])  
        )[20:24])  
        return ip
    except:
        return ''   
  
 
old_ip =''

while True:  
    new_ip = get_ip_address('pppoe-wan') 
    if new_ip != old_ip and new_ip != '':
        msg = '你的路由器IP:%s'%new_ip
        old_ip = new_ip
        try:
            jpush.push_msg(msg)
        except:
            sleep(2)
            continue
    sleep(10*60)