python檢測IP位址變化並觸發事件

2022-10-04 18:27:07 字數 2984 閱讀 5210

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 re

def 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_cur

def send_data_request(s_euid,d_euid,c_euid,na,port):

address = (na, port)

s = socket(af_inet,sock_dgram)

flag=1

while 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_tywww.cppcns.compe=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_euid

print(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_i程式設計客棧p(cmd)

get_cnt=get_cnt+1

if time_flag:

if ip_cur!='0.0.0.0' and ip_next !='0.0.0.0':

if ip_cur == ip_next:

change_flag=0

print('change_flag='+str(change_flag))

else:

change_flag=1

print('change_flag='+str(change_flag))

send_data_request(s_euid,d_euid,c_euid,na,port)

return ip_next

if __name__ == '__main__':

cmd='ipconfig'

get_cnt=0 #ip 獲取次數計數器

t_interval=0.1 #ip 獲取週期

ip_curwww.cppcns.com='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+1

twww.cppcns.comime_flag=1

s_euid='aaaa'

d_euid='bbbb'

c_euid='cccc'

na='192.168.1.100'

port=35000

while 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_ne

print('ip_cur='+ip_next)

本文位址:

Shel 檢測合法的IP位址

0 9 1 9 0 9 1 0 9 2 0 4 0 9 25 0 5 0 9 1 9 0 9 1 0 9 2 0 4 0 9 25 0 5 1.利用電腦ip測試下 ifconfig grep color o 0 9 1 9 0 9 1 0 9 2 0 4 0 9 25 0 5 0 9 1 9 0 9...

如何檢測網路中的重複IP位址 防止ip位址衝突

重複ip位址可能會給網路管理員帶來很多麻煩。如何檢測出網路中的重複ip位址?如果網路中有路由器,還能檢測到重複ip位址嗎?答案是可以,通過一些方法比如傳送arp資料報到該ip位址,可以檢測出重複ip位址。首先,我們要知道哪些情況會導致程式設計客棧ip位址衝突。一旦網路上的兩台裝置被分配相同的ip位址...

python匹配ip位址

ip位址是用3個 號作為分隔符,分割4個數字,每個數字的取值在 0,255 一般日誌檔案中的ip位址都是有效的ip位址,不需要我們再去驗證,因此,若從日誌檔案中提取ip,那麼可以簡單寫成這樣 import re s kkk 192.168.1.136 kkk 192.168.1.137 kk 192...