最近做项目,为了简单操作,代替人工手动pub和sub。自己设计的一个机器代替人工完成重复无聊的工作脚本。【实战项目】
MQTT订阅
首先Python写好一个订阅程序如下:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/2/5 17:15 # @Author : Administrator # @File : base.py # 时间戳程序 import time def local_time(): times = time.time() local_time = time.localtime(times) print("运行时间戳:", time.strftime("%Y-%m-%d %H:%M:%S", local_time))
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/2/5 14:28 # @Author : Administrator # @File : test_sub.py # 盒子broker收到mqtt消息 import paho.mqtt.client as mqtt import json from base import local_time
# 服务器地址
host = '要订阅的ip' # 通信端口 默认端口1883 port = 1883 username = 'your username' password = 'your password' # 订阅主题名 topic = '订阅主题' # 连接后事件 def on_connect(client, userdata, flags, respons_code): local_time() if respons_code == 0: # 连接成功 print('Connection Succeed!') else: # 连接失败并显示错误代码 print('Connect Error status {0}'.format(respons_code)) # 订阅信息 client.subscribe(topic) # 接收到数据后事件 def on_message(client, userdata, msg): # 打印订阅消息主题 print("topic", msg.topic) # 打印消息数据 print("msg payload", json.loads(msg.payload)) def main_demo(): client = mqtt.Client() # 注册事件 client.on_connect = on_connect client.on_message = on_message # 设置账号密码(如果需要的话) client.username_pw_set(username, password=password) # 连接到服务器 client.connect(host, port=port, keepalive=60) # 守护连接状态 client.loop_forever() if __name__ == '__main__': main_demo()
MQTT定时发布
shell脚本实现mqtt的发布,写在/home/目录下myshell.sh
#! /bin/bash mosquitto_pub -p 1883 -t 主题 -m "发布内容" -u 用户名 -P 密码 -h 192.168.0.90
利用Ubuntu的定时周期性执行脚本
应用场景:设置执行频率为8-23点每小时的第5分钟执行一次 //////// 每 30 分钟运行一次 cron 任务 ////////每10分钟执行一次cron任务(0,10,20,30,40,50 * * * * /home/myshell.sh)当然我这里后来改为每10分钟执行一下脚本
首先切换至root权限:sudo su
crontab -e # 注意:这里会让你选择编辑器,若选错了不好用记得执行: select-editor # (针对crontab的一个命令), 可以让你重新选一次
根据具体业务实现定时执行脚本效果
# 启动任务 /etc/init.d/cron start # 查看设置的定时任务 crontab -l # 删除定时任务 crontab -r
# 重启cron:新加入的定时任务不会马上执行,一般要等一会儿,除非你重启服务器 sudo service cron restart
到这里就实现了 定时执行脚本的任务。。。