利用python检测IP地址变化并触发事件
IoT PoC项目中需要展示视频采集源进行wifi切换后(表明视频采集源端发生了移动),接收端观看到的视频的流畅度,以及当接收端进行移动时,检测视频的流畅度,故需要一个模块周期性地探测本地IP是否变化,以指示设备的移动性。
操作:当设备做为视频接受者发生移动时,在IP变化后立刻向视频发送者发送携带有新IP的内容请求消息
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import subprocess
from time import sleep
import logging.config
from socket import *
import binascii
import json
import redef search(pattern,text,flag): #print(text)m=re.search(pattern,text)if m is not None:return m.group(flag)def get_ip(cmd):ip_cur = '0.0.0.0'while ip_cur == '0.0.0.0':obj = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)obj.wait()lines = obj.stdout.readlines() for eachline in lines:eachline= eachline.decode('gbk')#print(eachline)strs='IPv4 地址'if strs in eachline: content=search('IPv4 地址 . . . . . . . . . . . . :(.*?)\r\n',eachline,1)#print(content)ip_cur = str(content)print(ip_cur)break return ip_curdef send_data_request(S_EUID,D_EUID,C_EUID,NA,port):address = (NA, port)s = socket(AF_INET,SOCK_DGRAM) flag=1while flag: s_EUID=binascii.a2b_hex(S_EUID) d_EUID=binascii.a2b_hex(D_EUID)sev_type=binascii.a2b_hex(hex(22).replace('0x',''))Head_len=binascii.a2b_hex(hex(36).replace('0x',''))ICN_check=binascii.a2b_hex(hex(4444).replace('0x',''))packet_type=binascii.a2b_hex('0'+hex(1).replace('0x','')) c_EUID=binascii.a2b_hex(C_EUID) data=s_EUID+d_EUID+ sev_type+Head_len\+ICN_check+packet_type+c_EUIDprint(len(data))if not data: break s.sendto(data,address)flag=0 s.close()def ip_cmp(cmd,S_EUID,D_EUID,C_EUID,NA,port,IP_cur,get_cnt): ip_next=get_ip(cmd)get_cnt=get_cnt+1if time_flag:if ip_cur!='0.0.0.0' and ip_next !='0.0.0.0':if ip_cur == ip_next:change_flag=0print('change_flag='+str(change_flag))else:change_flag=1print('change_flag='+str(change_flag)) send_data_request(S_EUID,D_EUID,C_EUID,NA,port)return ip_nextif __name__ == '__main__':cmd='ipconfig'get_cnt=0 #ip 获取次数计数器T_interval=0.1 #ip 获取周期ip_cur='0.0.0.0' ip_next='0.0.0.0'ip_cur=get_ip(cmd)#ip_cur='192.168.110.1'get_cnt=get_cnt+1time_flag=1S_EUID='aaaa'D_EUID='bbbb'C_EUID='cccc'NA='192.168.1.100' port=35000while time_flag:ip_next=ip_cmp(cmd,S_EUID,D_EUID,C_EUID,NA,port,ip_cur,get_cnt)print('IP_next='+ip_next)sleep(T_interval)ip_cur=ip_nextprint('IP_cur='+ip_next)
本代码中,利用ipconfig指令获取IP地址,该方法可能存在一定的问题,故还可采用其他的方法获取IP,如用socket方法可以获取本地的外网IP,这里不赘述,可再百度相关的方法。
利用python检测IP地址变化并触发事件相关推荐
- python批量telnet检测IP地址的端口是否开放
python批量telnet检测IP地址的端口是否开放 需求 代码 示例 需求 需要检查多个端口是否开放,没有找到第三方工具和服务来快速测通,就自己用python写了个脚本.原理是通过telnet来实 ...
- python判断字符串合法,详解Python判定IP地址合法性的三种方法 python中判断一个字符串是否是IP地址...
html 中 鼠标放在标签上会显示小手状,其它标签在其他标签上,美工给加了一些样式,鼠标放上去也显示小手状.有哪位大手状样式 有什么不懂的前端问题可以去菜鸟驿站.全都是泡沫,只一刹的花火,所谓的友情, ...
- php试题判断ip是否合法,php检测IP地址是否合法的方法
这几天一直在用php做一个关于IP地址的工具大全,这其中就涉及到了一个最为关键的逻辑.就是用户在提交IP地址时,为了防止用户勿输入或捣乱,就要对提交的IP地址做一个简单的判断. 下面提供几种利用php ...
- 用Python更改IP地址(转)
用Python更改IP地址(转) 大多数用笔记本电脑的朋友都有一个烦恼,那就是在家里和公司的IP地址不一样,上班和回家后都得来回切换IP地址,两个字"麻烦".最近在写Python, ...
- Python对IP地址列表排序、对列表进行去重、IP地址与MAC地址组合的多个元组的列表排序
1.python对IP地址列表排序 # -*- coding: utf-8 -*-import socket listIP = ['10.5.11.1', '192.168.1.33', '10.5. ...
- python对ip地址排序、对列表进行去重
一:使用python对ip地址排序所用代码示例一: import socketiplist = ['10.5.11.1','192.168.1.33','10.5.2.4','10.5.1.3','1 ...
- Java检测IP地址输入是否正确
题目描述: 1.编写一个方法验证一个IP地址的格式是否正确,正确返回true,不正确返回false,该方法可定义如下 public boolean isRightIP(String ip) 其中,参数 ...
- linux添加ip白名单_centOS7 下利用iptables配置IP地址白名单的方法
编辑iptables配置文件,将文件内容更改为如下,则具备了ip地址白名单功能 #vim /etc/sysconfig/iptables *filter :INPUT ACCEPT [0:0] :FO ...
- python解码IP地址
互联网上分布着很多设备,如电脑.手机.智能手表等.设备与设备之间会互相通信,如你给朋友发送一条微信语音信息,其实就是你的手机在与朋友的手机进行通信. 但是,这条信息为什么会准确到达你朋友的手机,而不是 ...
最新文章
- smarty mysql demo_PHP Smarty模版简单使用方法
- System.setProperty()
- App正义联盟VS App Store、领英上线视频故事、亚马逊进军游戏流媒体| Decode the Week...
- [转]Installing Memcached on Windows
- 使用C#进行系统编程
- STL sector 应用
- python中的与或非_「Python基础」 While 循环语句
- Chrome 将不再允许 https:// 页面加载 HTTP 资源
- python 引入同一路径的类_Python实现Wordcloud生成词云图的示例
- java 全选 反选取值_全选反选以及获取选中的数据
- 多个切点 boot spring_spring基于aspectJ的切点表示
- 搜狗浏览器连接海康摄像头,无法显示画面
- Flash loader demo下载与使用之最小系统STM32C8T6使用USB转TTL串口下载
- 分享hm77芯片组bios工具 联想m490添加inter7265ac 白名单bios
- 二级计算机excel以宏保存,excel宏保存 设置宏保存位置的操作方法
- 201671030107词频统计软件项目报告
- exsi服务器如何支持usbkey,ESXi直通USB键鼠
- 计算机网络实验指导gns3,计算机网络实践教程——基于GNS3网络模拟器(CISCO技术)...
- 双网口以太网IO模块的优势
- 读书笔记(SRE:Google运维解密):第22章 处理连锁故障