Files
admin aac9f5934d feat: 添加多个功能模块和工具脚本
- 新增websocket客户端和服务端实现
- 添加图片压缩工具和快速压缩脚本
- 实现学生信息处理相关API
- 添加MQTT客户端和消息处理功能
- 更新.gitignore忽略更多文件类型
- 添加数据库操作工具和示例
- 实现多个测试脚本和工具类
2026-04-13 14:47:50 +08:00

20 KiB

In [59]:
from paho.mqtt import client as mqtt
import json
import time
from requests import get,post,delete
In [60]:
broker = '100.68.18.111'
# broker = '192.168.0.111'
ip = "http://100.68.18.111:9008"
port = 1883
topic = "/python/mqtt"
client_id = f'python-mqtt-demo'
In [61]:
# 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 [61]:
0
In [62]:
client.publish("demo/python", "Hello World!")
Out [62]:
<paho.mqtt.client.MQTTMessageInfo at 0x250160b7bf0>
In [63]:
token = post(f"{ip}/login",json={"username":"admin","password":"admin123"}).json()["token"]
In [64]:
headers = {"Authorization":f"Bearer {token}"}
In [72]:
records = get(f"{ip}/school/devices/listPage?temaId=19&groupId=0&pageNum=1&pageSize=40",headers=headers).json()["data"]["records"]
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Cell In[72], line 1
----> 1 records = get(f"{ip}/school/devices/listPage?temaId=19&groupId=0&pageNum=1&pageSize=40",headers=headers).json()["data"]["records"]

KeyError: 'data'
In [73]:
macs =[]
for item in records:
    macs.append(item.get("machineCode", ""))
In [74]:
#在线
onlines = []
offlines=[]
for item in records:
    if item.get("online",0)==1:
        onlines.append(item['machineCode'])
    else:
        offlines.append(item['machineCode'])
In [75]:
len(onlines)
Out [75]:
27
In [69]:
len(offlines)
Out [69]:
6

升级

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.1
In [14]:
'00e066fd8782'.upper()
Out [14]:
'00E066FD8782'
In [81]:
for index,item in enumerate(macs):
    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 [ ]:
# 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/HEU.exe","type":"down"}
#     client.publish(topic,json.dumps(message,ensure_ascii=False))
In [76]:
for index,item in enumerate(macs):
    time.sleep(1)
    topic = f"cmd/publicizeTelevision/{item}/dog"
    message = {"type":"stop"}
    client.publish(topic,json.dumps(message,ensure_ascii=False))
In [ ]:
# topic = f"cmd/publicizeTelevision/00e066fd8989/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))
<paho.mqtt.client.MQTTMessageInfo at 0x250130fca90>
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 [11]:
for item in macs:
    topic = f"cmd/publicizeTelevision/{item}/cmd"
    message = '''systeminfo'''
    client.publish(topic,message)
In [49]:
for item in macs:
    topic = f"cmd/publicizeTelevision/{item}/cmd"
    message = "shutdown /r"
    client.publish(topic,message)
In [48]:
for item in macs:
    topic = f"cmd/publicizeTelevision/{item}/cmd"
    message = '''taskkill /f /t /im watchDog.exe'''
    client.publish(topic,message)

cmd

In [19]:
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 [ ]:

for item in macs:
    topic = f"cmd/televisionDog/{item.upper()}/common"
    message = {
 "common":["shutdown /r  "]
}
    client.publish(topic,json.dumps(message, ensure_ascii=False))
In [80]:
for item in macs:
    topic = f"cmd/televisionDog/{item.upper()}/control"
    message = {
 "type":"capture",
 "id":"1",
}
    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]:
tem
Out [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 [ ]: