- 新增websocket客户端和服务端实现 - 添加图片压缩工具和快速压缩脚本 - 实现学生信息处理相关API - 添加MQTT客户端和消息处理功能 - 更新.gitignore忽略更多文件类型 - 添加数据库操作工具和示例 - 实现多个测试脚本和工具类
20 KiB
20 KiB
In [1]:
from paho.mqtt import client as mqtt
import json
import time
from requests import get,post,deleteIn [2]:
broker = '100.64.0.6'
# broker = '192.168.0.111'
ip = "http://100.64.0.6:9008"
port = 1883
topic = "/python/mqtt"
client_id = f'python-mqtt-demo'In [3]:
# MQTT客户端的回调函数
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
# 连接成功后订阅主题
# client.subscribe("#")
def on_message(client, userdata, msg):
print(msg.topic+" "+str(msg.payload))
# 创建MQTT客户端实例
client = mqtt.Client(client_id=client_id)
# 绑定回调函数
client.on_connect = on_connect
client.on_message = on_message
# 连接到MQTT代理
client.connect(broker, port, 60)Out [3]:
0
In [4]:
client.publish("demo/python", "Hello World!")Out [4]:
<paho.mqtt.client.MQTTMessageInfo at 0x201f147c7c0>
In [5]:
token = post(f"{ip}/login",json={"username":"admin","password":"admin123"}).json()["token"]In [6]:
headers = {"Authorization":f"Bearer {token}"}In [7]:
records = get(f"{ip}/school/devices/listPage?temaId=19&groupId=0&pageNum=1&pageSize=40",headers=headers).json()["data"]["records"]In [8]:
macs =[]
for item in records:
macs.append(item.get("machineCode", ""))In [9]:
#在线
onlines = []
offlines=[]
for item in records:
if item.get("online",0)==1:
onlines.append(item['machineCode'])
else:
offlines.append(item['machineCode'])In [10]:
len(onlines)Out [10]:
2
In [11]:
len(offlines)Out [11]:
2
In [13]:
recordsOut [13]:
[{'machineCode': '20254c7802bd',
'displayName': '七步洗手法',
'ip': '192.168.8.10',
'groupId': 1,
'contentId': 86,
'updateTime': '2025-10-28T09:15:36',
'version': '1.0.50',
'deviceName': '食堂门口',
'groupName': '食堂',
'createTime': '2025-10-26T08:58:36',
'teamId': 19,
'online': 0,
'location': '食堂门口',
'id': 'cade19b0-1f2d-4c9c-8289-c7741d56bb0b'},
{'machineCode': '20254c9856bf',
'displayName': '七步洗手法',
'ip': '192.168.8.3',
'groupId': 30,
'contentId': 86,
'updateTime': '2025-10-28T10:34:34',
'version': '1.0.50',
'deviceName': '3楼一体机',
'groupName': '教学楼',
'createTime': '2025-10-12T17:58:33',
'teamId': 19,
'online': 1,
'location': '3楼',
'id': '9b876939-9258-4c87-a2f9-d4a61459e8ab'},
{'machineCode': '20254c823347',
'displayName': '七步洗手法',
'ip': '192.168.8.2',
'groupId': 30,
'contentId': 86,
'updateTime': '2025-10-28T10:22:24',
'version': '1.0.50',
'deviceName': '2楼一体机',
'groupName': '教学楼',
'createTime': '2025-10-12T17:51:30',
'teamId': 19,
'online': 0,
'location': '2楼',
'id': '1c25761c-5917-4c2b-af42-f3cc258e6957'}]In [ ]:
topic = "common/publicizeTelevision/00e066fd87b1/ota/upgrade"
client.publish(topic,"1")<paho.mqtt.client.MQTTMessageInfo at 0x1b5acdeda90>
In [ ]:
for item in macs:
topic = f"common/publicizeTelevision/{item}/ota/upgrade"
client.publish(topic,"1")In [12]:
for item,index in enumerate(macs):
print(item,index)
0 00e066fd898e 1 000000000001 2 00e0b413c78b 3 00e066fd86c5 4 000000000000 5 00e066fd8711 6 00e066fd8782 7 00e066fd87b1 8 00e066fd898d 9 00e066fd8710 10 00e066fd87ad 11 00e066fd890b 12 00e066fd882d 13 00e066fd61fc 14 00e066fd8927 15 00e066fd898c 16 00e066fd890c 17 00e066fd86c4 18 00e066fd8981 19 00e066fd87af 20 00e066fd891f 21 000ec6431230 22 00e066fd8988 23 00e066fd8832 24 00e066fd870d 25 00e066fd8990 26 00e066fd883a 27 00e066fd882f 28 00e066fd87b4 29 00e066fd8989 30 00e066fd8986 31 00e066fd8797 32 00e066fd898b 33 00e066fd8931
In [ ]:
# netsh interface ipv4 set address name="以太网" source=static address=192.168.0.110 mask=255.255.255.0 gateway=192.168.0.1In [14]:
'00e066fd8782'.upper()Out [14]:
'00E066FD8782'
In [45]:
for index,item in enumerate(macs):
time.sleep(1)
topic = f"cmd/publicizeTelevision/{item}/dog"
message = {"name":"watchDog.exe","url":"http://schoolserver.com:9008/common/download/app/watchDog.exe","type":"down"}
client.publish(topic,json.dumps(message,ensure_ascii=False))In [30]:
topic = f"cmd/publicizeTelevision/000c290a0fcb/dog"
message = {"name":"watchDog.exe","url":"http://schoolserver.com:9008/common/download/app/watchDog.exe","type":"down"}
client.publish(topic,json.dumps(message,ensure_ascii=False))Out [30]:
<paho.mqtt.client.MQTTMessageInfo at 0x2015292bfb0>
In [77]:
for item in macs:
topic = f"cmd/publicizeTelevision/{item}/cmd"
message = '''reg query "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run"'''
client.publish(topic,message)<>:3: SyntaxWarning: invalid escape sequence '\S' <>:3: SyntaxWarning: invalid escape sequence '\S' C:\Users\Administrator\AppData\Local\Temp\ipykernel_8436\3533498662.py:3: SyntaxWarning: invalid escape sequence '\S' message = '''reg query "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run"'''
In [20]:
for item in macs:
topic = f"cmd/publicizeTelevision/{item}/cmd"
message = '''systeminfo'''
client.publish(topic,message)In [13]:
for item in macs:
topic = f"cmd/televisionDog/{item.upper()}/ask"
client.publish(topic,"1")In [ ]:
In [16]:
'00e066fd8832'.upper()Out [16]:
'00E066FD8832'
In [17]:
topic = f"cmd/televisionDog/00E066FD8832/ask"
client.publish(topic,"1")Out [17]:
<paho.mqtt.client.MQTTMessageInfo at 0x20d4b920e00>
In [24]:
# netsh interface ipv4 set address name="以太网" source=static address=13.1.1.125 mask=255.255.255.0 gateway=13.1.1.1
# message = {
# "common":['netsh interface ipv4 set address name="以太网" source=static address=13.1.1.119 mask=255.255.255.0 gateway=13.1.1.1','ping 13.1.1.1','shutdown /r /t 00']
# }
message = {
"common":['netsh interface ipv4 set address name="以太网" source=static address=13.1.1.115 mask=255.255.255.0 gateway=13.1.1.1 & ping 13.1.1.1 & shutdown /r /t 00']
}
client.publish("cmd/televisionDog/00E066FD882D/common",json.dumps(message, ensure_ascii=False))Out [24]:
<paho.mqtt.client.MQTTMessageInfo at 0x21087171c60>
In [19]:
for item in macs:
topic = f"cmd/televisionDog/{item.upper()}/common"
message = {
"common":['''slmgr /skms 10.19.64.158 & slmgr /ato''']
}
client.publish(topic,json.dumps(message, ensure_ascii=False))In [85]:
for item in macs:
topic = f"cmd/televisionDog/{item.upper()}/common"
message = {
"common":['''reg query "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run"''']
}
client.publish(topic,json.dumps(message, ensure_ascii=False))<>:4: SyntaxWarning: invalid escape sequence '\S' <>:4: SyntaxWarning: invalid escape sequence '\S' C:\Users\Administrator\AppData\Local\Temp\ipykernel_8436\2368358595.py:4: SyntaxWarning: invalid escape sequence '\S' "common":['''reg query "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run"''']
In [90]:
for item in macs:
topic = f"cmd/televisionDog/{item.upper()}/common"
message = {
"common":["tasklist | findstr \"校宣机程序\""]
}
client.publish(topic,json.dumps(message, ensure_ascii=False))In [15]:
message = {
"common":["ping 13.1.1.124"]
}
client.publish("cmd/televisionDog/00E066FD898E/common",json.dumps(message, ensure_ascii=False))Out [15]:
<paho.mqtt.client.MQTTMessageInfo at 0x201c062b510>
In [ ]:
In [ ]:
macs =['00e066fd883a']In [15]:
data = {"macs":["00e0b413c78b","00e066fd86c5","00e066fd8711","00e066fd8782","00e066fd87b1","00e066fd898d","00e066fd8710","00e066fd87ad","00e066fd890b","00e066fd882d","00e066fd61fc","00e066fd8927","00e066fd898c","00e066fd890c","00e066fd86c4","00e066fd8981","00e066fd87af","00e066fd891f","000ec6431230","00e066fd8988","00e066fd8832","00e066fd870d","00e066fd8990","00e066fd883a","00e066fd882f","00e066fd87b4","00e066fd8989","00e066fd8986","00e066fd8797","00e066fd898b","00e066fd8931"],"ips":["13.1.1.120","13.1.1.119","13.1.1.125","13.1.1.124","13.1.1.126","13.1.1.131","13.1.1.127","13.1.1.129","13.1.1.117","13.1.1.180","13.1.1.114","13.1.1.116","13.1.1.118","13.1.1.104","13.1.1.113","13.1.1.139","13.1.1.136","13.1.1.111","13.1.1.102","13.1.1.108","13.1.1.110","13.1.1.132","13.1.1.130","13.1.1.122","13.1.1.123","13.1.1.112","13.1.1.107","13.1.1.109","13.1.1.115","13.1.1.105","13.1.1.135"]}In [18]:
tem = []
for index,item in enumerate(data["macs"]):
tem.append({"mac":item,"ip":data["ips"][index]})In [19]:
temOut [19]:
[{'mac': '00e0b413c78b', 'ip': '13.1.1.120'},
{'mac': '00e066fd86c5', 'ip': '13.1.1.119'},
{'mac': '00e066fd8711', 'ip': '13.1.1.125'},
{'mac': '00e066fd8782', 'ip': '13.1.1.124'},
{'mac': '00e066fd87b1', 'ip': '13.1.1.126'},
{'mac': '00e066fd898d', 'ip': '13.1.1.131'},
{'mac': '00e066fd8710', 'ip': '13.1.1.127'},
{'mac': '00e066fd87ad', 'ip': '13.1.1.129'},
{'mac': '00e066fd890b', 'ip': '13.1.1.117'},
{'mac': '00e066fd882d', 'ip': '13.1.1.180'},
{'mac': '00e066fd61fc', 'ip': '13.1.1.114'},
{'mac': '00e066fd8927', 'ip': '13.1.1.116'},
{'mac': '00e066fd898c', 'ip': '13.1.1.118'},
{'mac': '00e066fd890c', 'ip': '13.1.1.104'},
{'mac': '00e066fd86c4', 'ip': '13.1.1.113'},
{'mac': '00e066fd8981', 'ip': '13.1.1.139'},
{'mac': '00e066fd87af', 'ip': '13.1.1.136'},
{'mac': '00e066fd891f', 'ip': '13.1.1.111'},
{'mac': '000ec6431230', 'ip': '13.1.1.102'},
{'mac': '00e066fd8988', 'ip': '13.1.1.108'},
{'mac': '00e066fd8832', 'ip': '13.1.1.110'},
{'mac': '00e066fd870d', 'ip': '13.1.1.132'},
{'mac': '00e066fd8990', 'ip': '13.1.1.130'},
{'mac': '00e066fd883a', 'ip': '13.1.1.122'},
{'mac': '00e066fd882f', 'ip': '13.1.1.123'},
{'mac': '00e066fd87b4', 'ip': '13.1.1.112'},
{'mac': '00e066fd8989', 'ip': '13.1.1.107'},
{'mac': '00e066fd8986', 'ip': '13.1.1.109'},
{'mac': '00e066fd8797', 'ip': '13.1.1.115'},
{'mac': '00e066fd898b', 'ip': '13.1.1.105'},
{'mac': '00e066fd8931', 'ip': '13.1.1.135'}]In [13]:
for item in macs:
topic = f"cmd/publicizeTelevision/{item}/setting"
message = {
"data":60000
}
client.publish(topic,json.dumps(message, ensure_ascii=False))In [14]:
macsOut [14]:
['00e0220fa0e4', '20254c7802bd', '20254c9856bf', '20254c823347']