随身WIFI 短信转发 MQTT QQ机器人 部署指北
前言
本教程使用于对Linux、Python、docker有一定基础的人群,纯小白用户有一定的上手难度,如果您为小白请放弃本教程请认真阅读本教程 善于利用NewBing等搜索引擎 可以在评论下方提问。
第一步 硬件准备
提示
市面上随身WIFI千奇百怪,但是内部使用的方案是大差不差,本教程所使用的随身WIFI型号为 淘宝工厂版的新训随身WIFI UFI_003 512mb + 4G 组合 自带卡槽 。
1. 对棒子备份数据
这段网上的教程比较多了,讲的肯定比我这个菜鸡清楚,这里推荐
高通骁龙芯片的随身wifi入门刷机教程 @伏莱兮浜 大佬的
2. 刷入Debian系统
在安卓系统备份完成之后就可以刷入Debian了,首先插入棒子 在cmd输入指令 adb reboot bootloader
然后我这里刷入的是 @苏苏小亮亮 大佬 的包
链接在这里:点击这里查看下载地址和文档
根据介绍,直接双击 Flash.bat
就行了,然后等待棒子刷机成功。
3. 进入Debian系统
刷好Debian后怎么进去呢? 我们在cmd中输入 adb shell
就可以以 root
身份进入到Debian系统,输入 sudo nmtui
可以设置棒子链接的WIFI,@苏苏小亮亮 大佬 的包里面的WIFI 配置界面是中文的,对新手比较友好。
如果不想每次链接棒子都用 adb
命令,可以在链接WIFI之后输入 sudo ifconfig
查看本机的ip地址,下次进入Debian系统就可以通过ssh链接进入。
个人踩坑:
1. 刚刚刷好系统之后没有反应,输入
adb shell
或链接ssh没有反应。 原因: 系统缺少USB共享网络的驱动
解决办法:参考 这篇文章 中的 6.1 驱动安装 ,这里还有一个坑 可能你在
其他设备
中找不到RNDIS
因为你的电脑把你的棒子识别成了安卓设备,需要在顶部有一个安卓设备,然后设置才能识别为RNDIS
,之后正常装驱动就可以了。2. 输入
sudo ifconfig
没有反应 原因:在我们的环境变量里,还没有设置完整变量
解决办法:
如果我们输入
/sbin/ifconfig
或/usr/bin/gcc
就可以执行命令行。 为了不输入命令行的完整路径,最好给用户配置好路径。vi ~/.bash_profile
里,添加PATH=$PATH:/sbin
回车export PATH
回车PATH=$PATH:/usr/bin
回车export PATH
。完成后,输入ifconfig
后,应该就可以执行命令了,如果不行的话,可以把用户注销,然后再登录测试。直接输入
[XXX@localhost ~]$ PATH=$PATH:/sbin [XXX@localhost ~]$ export PATH [XXX@localhost ~]$ PATH=$PATH:/usr/bin [XXX@localhost ~]$ export PATH
然后再输入ifconfig就可以了。
3. 连接棒子之后卡卡顿顿
解决办法 :如果链接棒子之后卡卡顿顿,所有的原因排查过之后们可以换一个充电插头试试,可能是供电不足导致的。
4. 让系统识别到手机卡 (什么?一定要插手机卡???)
这里,我参考的是这篇文章 随身wifi折腾入门(番外)-- debian优化使用 此大佬 @yanhy 这里也有使用 nmtui 链接WIFI的教程。
可以总结一下我们即将用到的:
-
首先,我们输入命令
ls /sys/class/leds/
user@openstick:~$ ls /sys/class/leds/ blue:wifi green:internet mmc0:: red:os sim:en sim:en2 sim:sel sim:sel2
如果显示有
sim:sel2
则可以用自己的卡 如果没有,则默认外置卡槽 -
输入指令
mmcli -m 0
,如果显示有内容但显示sim-missing
,此时则为卡槽模式,可插入自己的卡。如果出现这种情况:
user@openstick:~$ mmcli -m 0 error: couldn't find modem
可以重启 sim 卡
提前输入
su
进入 root 模式 密码1
systemctl stop ModemManager qmicli -d /dev/wwan0qmi0 --uim-sim-power-off=1 qmicli -d /dev/wwan0qmi0 --uim-sim-power-on=1 systemctl start ModemManager
输入
exit
退出 root 模式重启之后输入
mmcli -m 0
user@openstick:~$ mmcli -m 0 ----------------------------------- General | path: /org/freedesktop/ModemManager1/Modem/0 | device id: 7b2e2bb7f85***********85d39bed2e4ae7c8 ----------------------------------- Hardware | manufacturer: 1 | model: 0 | firmware revision: UFI003_CT 20211210 1 [Nov 04 2016 02:00:00] | carrier config: Commercial-CSFB-SS-CMCC | carrier config revision: 02011866 | h/w revision: 10000 | supported: gsm-umts, lte | current: gsm-umts, lte | equipment id: 8603******0691 ----------------------------------- System | device: qcom-soc | drivers: bam-dmux, qcom-q6v5-mss | plugin: qcom-soc | primary port: wwan0qmi0 | ports: wwan0 (net), wwan0at0 (at), wwan0qmi0 (qmi), wwan1 (net), | wwan2 (net), wwan3 (net), wwan4 (net), wwan5 (net), wwan6 (net), | wwan7 (net) ----------------------------------- Numbers | own: 86********* ----------------------------------- Status | lock: sim-pin2 | unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (3), sim-puk2 (10) | state: connected | power state: on | access tech: lte | signal quality: 73% (recent) ----------------------------------- Modes | supported: allowed: 2g; preferred: none | allowed: 3g; preferred: none | allowed: 4g; preferred: none | allowed: 2g, 3g; preferred: 3g | allowed: 2g, 3g; preferred: 2g | allowed: 2g, 4g; preferred: 4g | allowed: 2g, 4g; preferred: 2g | allowed: 3g, 4g; preferred: 4g | allowed: 3g, 4g; preferred: 3g | allowed: 2g, 3g, 4g; preferred: 4g | allowed: 2g, 3g, 4g; preferred: 3g | allowed: 2g, 3g, 4g; preferred: 2g | current: allowed: 2g, 3g, 4g; preferred: 4g ----------------------------------- Bands | supported: egsm, dcs, pcs, g850, utran-1, utran-5, utran-8, eutran-1, | eutran-3, eutran-5, eutran-8 | current: egsm, dcs, pcs, g850, utran-1, utran-5, utran-8, eutran-1, | eutran-3 ----------------------------------- IP | supported: ipv4, ipv6, ipv4v6 ----------------------------------- 3GPP | imei: 860********691 | enabled locks: fixed-dialing | operator id: 46000 | operator name: CMCC | registration: home ----------------------------------- 3GPP EPS | ue mode of operation: csps-1 | initial bearer path: /org/freedesktop/ModemManager1/Bearer/0 | initial bearer ip type: ipv4v6 ----------------------------------- SIM | primary sim path: /org/freedesktop/ModemManager1/SIM/0 ----------------------------------- Bearer | paths: /org/freedesktop/ModemManager1/Bearer/1
看到显示
connect
表示 sim卡已经连接,可以正常使用了。
5. 安装Python环境以及运行程序 人生苦短,我用Python
安装python环境 输入指令 sudo apt install python3
。
将程序上传到棒子中(这里我用的是 `Termius`):
- 点击这个
SFTP
然后连接上自己的棒子,把我的程序(Sms.py),在自己的home
文件夹中创建一个自己知道的文件夹,创建文件夹的时候也可以像我一样在命令行中操作
cd ~
mkdir Sms
cd Sms
然后找到自己创建的文件夹,把python文件拖进去。
# 短信转发的处理函数
def msg_forward(text):
ret = True
try:
#链接服务器
client = mqtt.Client()
client.connect( <这里填写你的MQTT服务器的 ip 和 端口号> )
client.publish(<这里填写你的主题>, text)
client.disconnect()
except Exception:
ret = False
return ret
这两个地方一定要填写!!!
-
运行程序
user@openstick:~$ cd Sms/ user@openstick:~/Sms$ ls Sms.py test user@openstick:~/Sms$ sudo python3 Sms.py 短信转发开始运行!
当出现
短信转发开始运行!
的时候,说明程序运行成功了,这时我们可以向手机卡发送短信,接收到的短信会显示在终端中,但是现在还有一个问题,如果我们关闭这个终端,程序也会随之结束,应该怎么办呢?输入
sudo apt install screen
安装 screen输入
sudo screen -R Sms
创建一个名叫Sms
的新窗口进去新窗口之后再重新运行程序。
Ctrl + Alt + D
退出窗口,程序继续运行,不会停止。
第二步 QQ机器人的配置
提示
本教程默认您已经学会 NoneBot2 的基础配置,以及依赖的安装。如果需要QQ机器人方面的教程请在下方留言哦~
1. 下载/登录 go-cqhttp
(以后可能会填坑)
参考 go-cqhttp 帮助中心
2. 安装 NoneBot2 启动机器人
(以后可能会填坑)
参考 NoneBot 官方文档
3. 配置插件
下载我的(mqtt文件夹)插件并且放在 您的机器人目录 /src/plugins/mqtt
在 bot.py
主程序中 添加代码:
.....
nonebot.load_plugins("src/plugins") # 添加这一行,在if __name__ == "__main__"上面就行
.....
if __name__ == "__main__":
nonebot.logger.warning("Always use `nb run` to start the bot instead of manually running!")
nonebot.run(app="__mp_main__:app")
在 .env.*
( 这里的 *
代表的是 dev
或者 prod
,看你在 .env
中选的是什么 ) 中添加:
#MQTT 订阅 接收消息
MQTT_TOPIC="Sms"# mqtt订阅topic
MQTT_CLIENT_ID="QQBot"# mqtt订阅clientid
MQTT_HOST="*******"# mqtt broker地址
MQTT_PORT="1883"# mqtt broker端口
SMS_QQ="*****"# 要转发的qq号
MQTT_USER # mqtt 可选验证项
MQTT_PASSWORD
第三步 MQTT服务器的安装
提示
mqtt服务器不建议安装在一个小小的棒子上,所以,本教程更加适合那些手边有一个闲置服务器的人群,或者您可以把您的服务布置在公益的mqtt服务器上,但是为了您的数据安全,俺强烈 不 建议这样做
这里推荐用docker安装
参考 EMQX官方网站
直接运行它上面的代码就行了,傻瓜式安装。
第一次的能录密码是 账号: admin
密码: public
最后叨叨
这是我第一次写这种教程,有写的不清楚的地方还请多多见谅,希望大家都可以用上自己的短信转发~
附件下载地址:蓝奏云