让你的树莓派和手机备号不再吃灰:短信转发

2020-03-02 18:42:46 148点赞 883收藏 199评论

写在前面

在大妈四五年,一直都是默默买买买,从来没写过文章,所以这是第一次,写得不好多多包涵让你的树莓派和手机备号不再吃灰:短信转发

作为一个居家理科男,平时除了喜欢修修补补diy,家里的日用开销也是我包干的,手上有些自己无限回购的好东西,后面看情况也跟大家做个分享,欢迎关注让你的树莓派和手机备号不再吃灰:短信转发

回归正题,手上有块3B,是当年在某鱼淘的垃圾,到手后接了一块闲置的3.5寸1TB硬盘,折腾了下载机(aria2+AriaNG的方案)、SMB、gogs,配置了免密登录和autossh反向隧道,最后写了shell脚本定期全局多介质对系统进行备份,到这份上基本就算完了。就这样放在办公室一年多,虽然性能弱鸡,但不可否认确实给工作带来了些许便利,比如我工作中写的代码都放在gogs,几百G的电影电视剧都是通过aira2下载,SMB共享给同事

直到有一天,基友给我发来了一篇知乎的文章:

树莓派能用来干什么? - 知乎

我手上正好有张联通卡,在投奔移动之后就变成了副卡,12块钱一个月养着也不贵,平时插在备机上只能用来收收垃圾短信接接骚扰电话,但有些关键短信使得我有时候出门不得不带两部手机,这个方案真的再适合不过。所以这个小项目的需求如下:

1、树莓派有条件7x24联网在线

2、基于Python

3、因为2G模块存在被短信嗅探的风险,在可控成本内尽量选用4G模块

4、转发方案必须免费稳定体验佳,一开始选的server酱,使用下来稳定性和体验上略逊,网上有tg聊天机器人的方案,国内还是首选微信吧

5、转发服务必须支持树莓系统重启后自动生效,支持长短信合并后转发,延时不能太大

下面就把过程分享给大家~

准备

一、确认你的树莓派带Python3.x

python3

让你的树莓派和手机备号不再吃灰:短信转发

二、购买通讯模块

1、投资100-150购买4G模块(移远EC20 CEHCLG mini pcie+华为pcie转USB开发板),tb某鱼大家各显神通吧,避嫌就不放链接了,基于最佳实践原则,型号尽量跟我一致吧让你的树莓派和手机备号不再吃灰:短信转发

让你的树莓派和手机备号不再吃灰:短信转发

让你的树莓派和手机备号不再吃灰:短信转发

2、如果所处环境信号较差,建议再花十几二十块钱买根增益天线,否则用gammu测试发送短信的时候会报350的未知错误,你就算找卖家技术支持也是一问三不知让你的树莓派和手机备号不再吃灰:短信转发

让你的树莓派和手机备号不再吃灰:短信转发

让你的树莓派和手机备号不再吃灰:短信转发

让你的树莓派和手机备号不再吃灰:短信转发

三、注册企业微信

点击这里注册

几点说明:

1、关于企业名称

让你的树莓派和手机备号不再吃灰:短信转发

这里的企业名称对应会显示在微信消息列表中:

让你的树莓派和手机备号不再吃灰:短信转发

2、认证需要花钱,无需认证无需认证无需认证

3、注册完成后,新建应用。步骤:“应用管理”->“自建”->“创建应用”

让你的树莓派和手机备号不再吃灰:短信转发

应用名称“联通号转发”对应显示在消息列表的企业号下:

让你的树莓派和手机备号不再吃灰:短信转发

3、完成以上步骤后,拿到以下三个关键要素

企业ID:“我的企业”->“企业信息”->页面下方有个“企业ID”

AgentId和Secret:“应用管理”->点击对应应用程序进入

让你的树莓派和手机备号不再吃灰:短信转发

折腾过程

以下配置操作都在pi用户下执行,win下的编辑器容易出现各种各样莫名的编码问题,建议直接vim:

一、部署程序

程序包以及下面需要用到的配置文件,见文末百度网盘链接

整个工具一共就两个py文件,100行代码,非常简单,本来这两个py是写一块儿的,为了方便爬虫通知的时候也能复用,我把推送微信独立了出来

gammu-smsd的官方文档其实是有问题的,导致“smsForward.py”中拼接长短信的时候总是获取不到正确的短信内容,后面自己调通了,所以这里的“smsForward.py”不需要做任何修改

1、将下载的压缩包解开,把“pushToWechat”和“smsForward”放入“/home/pi/tools”下(注意用户、组和权限)

2、修改“pushToWechat.py”

vim /home/pi/tools/pushToWechat/pushToWechat.py

把上面拿到企业微信的企业ID、应用密钥、应用ID填入:

让你的树莓派和手机备号不再吃灰:短信转发

二、把副卡插入EC20模块,把模块插入树莓派的USB。使用以下命令可以看到有 ttyUSB0~3四个设备,应该对应EC20不同的口,比如短信口或者数据口:

ls /dev/ttyUSB*

让你的树莓派和手机备号不再吃灰:短信转发

三、安装和配置gammu

1、安装gammu

sudo apt-get install gammu

2、配置gammu

sudo gammu-config

直接两个Yes跳过:

让你的树莓派和手机备号不再吃灰:短信转发

让你的树莓派和手机备号不再吃灰:短信转发

按照下图配置,保存后退出:

让你的树莓派和手机备号不再吃灰:短信转发

3、测试是否配置成功

3.1、查看设备信息

sudo gammu --identify

如果这时输出设备和SIM卡信息,说明EC20设备配置成功,否则需要修改上面第三步第2点中gammu的Port,从ttyUSB0~3逐个试,直到成功输出信息为止:

让你的树莓派和手机备号不再吃灰:短信转发

3.2、尝试发送短信

使用以下命令尝试发送短信(后面的186XXXXXXXX自行替换成接收短信的手机号),如果能收到短信,则说明配置成功,如果报错350,买天线吧让你的树莓派和手机备号不再吃灰:短信转发

echo "a test sms from ec20" | sudo gammu sendsms TEXT 186XXXXXXXX

四、安装和配置gammu-smsd,用于接收短信

1、安装gammu-smsd

sudo apt-get install gammu-smsd

2、配置 gammu-smsd

sudo vim /etc/gammu-smsdrc

贴入以下内容(我会将gammu-smsdrc放在文末百度网盘压缩包中):

# Configuration file for Gammu SMS Daemon

# Gammu library configuration, see gammurc(5)

[gammu]

# Please configure this!

port = /dev/ttyUSB3

#port = /dev/ec20

connection = at19200

# Debugging

#logformat = textall

# SMSD configuration, see gammu-smsdrc(5)

[smsd]

service = files

RunOnReceive = /usr/bin/python3 /home/pi/tools/smsForward/smsForward.py

#logfile = syslog

logfile = /home/pi/gammu/log/log_smsd.log

# Increase for debugging information

debuglevel = 0

# Paths where messages are stored

inboxpath = /home/pi/gammu/inbox/

outboxpath = /home/pi/gammu/outbox/

sentsmspath = /home/pi/gammu/sent/

errorsmspath = /home/pi/gammu/error/

关键配置项简单说明:

port:对应上面配置的设备口

service:接收后短信在本地的保存方式,这里配置为files,表示收到的短信以txt文本方式存放,当然也支持将短信存入数据库

RunOnReceive:短信收到后调用什么脚本或程序,这里是短信内容拼接后转发微信的程序,也就是“smsForward.py”

inboxpath/outboxpath/sentsmspath/errorsmspath:短信收件箱发件箱的路径,这里只关心inboxpath,收到的短信放在该路径下,文件名”IN<date>_<time>_<serial>_<sender>_<sequence>.txt“

3、手工启动gammu-smsd,并尝试接收短信

sudo gammu-smsd --config /etc/gammu-smsdrc --pid /var/run/gammu-smsd.pid --daemon --user pi --group pi

理论上,这时候用其他手机号给这个备号发短信,inboxpath下就会有txt文件生成了,请自行验证

4、配置 gammu-smsd开机自启动

sudo vim /lib/systemd/system/gammu-smsd.service

贴入以下内容(我会将gammu-smsd.service放在文末百度网盘压缩包中):

[Unit]

Description=SMS daemon for Gammu

Documentation=man:gammu-smsd(1)

After=mysql.service postgresql.service

[Service]

EnvironmentFile=-/etc/sysconfig/gammu-smsd

# Run daemon as root user

ExecReload=/bin/kill -HUP $MAINPID

ExecStopPost=/bin/rm -f /var/run/gammu-smsd.pid

Type=forking

PIDFile=/var/run/gammu-smsd.pid

ExecStartPre=/bin/sleep 30

ExecStart=/usr/bin/gammu-smsd --config /etc/gammu-smsdrc --pid /var/run/gammu-smsd.pid --daemon --user pi --group pi

[Install]

WantedBy=multi-user.target

关键配置项简单说明:

ExecStartPre:树莓派启动后,EC20设备会初始化,为了避免gammu-smsd启动先于设备初始化,这里做一个30秒的等待

通过以下命令开启开机自启动:

sudo systemctl enable gammu-smsd

gammu-smsd的启停命令:

sudo systemctl start gammu-smsd

sudo systemctl stop gammu-smsd

sudo systemctl restart gammu-smsd

5、针对gammu-smsd的关机优化脚本

实践发现EC20这块卡有个问题,树莓派系统关机前如果gammu-smsd进程还在的话,下次启动时EC20短信口因为被占用,ttyUSB编号会变,比如从ttyUSB3变成ttyUSB2,使得配置失效,所以关机前需要把gammu-smsd进程kill掉。这个问题困扰了很久,找了商家依然一问三不知让你的树莓派和手机备号不再吃灰:短信转发

sudo vim /lib/systemd/system-shutdown/kill-gammu-smsd.sh

写入以下内容(我会将kill-gammu-smsd.sh放在文末百度网盘压缩包中):

#!/bin/bash

ps aux | grep gammu-smsd | grep -v 'grep' | awk '{print $2}' | xargs kill -9

至此,所有配置都已完成,重启树莓派后,向备号发送短信,微信就能收到转发的短信,效果如下(头像是我家泰迪让你的树莓派和手机备号不再吃灰:短信转发 ):

让你的树莓派和手机备号不再吃灰:短信转发

总结

优点:

1、如果你也跟我一样,有一个半死不活的备号,不舍得注销,没有双卡双待手机,也不愿意拿两部手机出门,同时对于垃圾短信和骚扰电话头痛不已,你只需要投入百来块钱,就能使备号24小时在线做主号的挡箭牌,这真的是我目前找到的树莓派最最实用的应用,至少对于我是这样。半年多的使用,以下场景非常实用:注册垃圾网站、搪塞街头地推、网购收货取件码(京东因为是送货上门,暂时还是用的主号)。

2、稳定。这套方案完成后,全家去了趟日本,这期间主手机插日本流量卡,树莓派插国内的主号,这样一来,既不会影响在日本的流量使用,同时只要保证日本期间有网络可用,我就不会漏掉任何一条主号收到的短信。

缺点:

1、如果通过微信H5页面或者小程序注册或者短信登录,在没有登录微信PC端的前提下,操作起来就没那么方便了。虽然这种情况不多,但你可以自己感受一下让你的树莓派和手机备号不再吃灰:短信转发

2、无法接听电话。我不知道应该把这点归入优点还是缺点让你的树莓派和手机备号不再吃灰:短信转发 如果你只用来注册垃圾网站和收货,可以明确的是,你接到的电话肯定是骚扰电话,所以接不到不就达到了屏蔽骚扰电话的目的吗让你的树莓派和手机备号不再吃灰:短信转发 当然,通过EC20是可以拿到未接电话号码的,只是对我来说没那么重要,有兴趣的同学可以研究分享一下。

3、对你来说,垃圾短信并没有少让你的树莓派和手机备号不再吃灰:短信转发 期间写过基于朴素贝叶斯的垃圾短信过滤,但不知道是样本质量太差还是算法有问题,效果差强人意,后来也就作罢了让你的树莓派和手机备号不再吃灰:短信转发

程序包在这里~~~

提取码:tkzw


展开 收起
199评论

  • 精彩
  • 最新
  • 你这套设备比备用手机贵

    校验提示文案

    提交
    每个人关注点不一样,理解

    校验提示文案

    提交
    树莓派同时还能做点别的 备机就只能转发个短信了

    校验提示文案

    提交
    还有9条回复
    收起所有回复
  • 备用手机直接转发他不香吗

    校验提示文案

    提交
    并不是谁都有安卓备机

    校验提示文案

    提交
    用什么软件转发?

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 作者你好,你文章提到下次启动时EC20短信口因为被占用,ttyUSB编号会变。我发现是gammu设置了ttyusb3,然后gamnu-smsd也是ttyusb3导致的.而且短信转发不需要安装gammu,只安装gammu-smsd也是可以的转发成功的。我环境是斐讯n1+armbian系统+ec20模块

    校验提示文案

    提交
    是的,我最近做了调整发现关机前不去kill smsd,在下次启动时等待1分钟再启动smsd也没问题,怀疑跟我之前插了移动硬盘有关系,这个只能自己试了,每个人情况好像还不太一样

    校验提示文案

    提交
    写个教程如何?谢谢!

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • 呃,没看到文中所说的度盘链接.....

    校验提示文案

    提交
    确实漏了 [狂汗] 已经补了,等小编审核

    校验提示文案

    提交
    确实漏了 [狂汗] 已经补了,等通过

    校验提示文案

    提交
    收起所有回复
  • 用sim800c也可以吧?

    校验提示文案

    提交
    理论上都是可以的…你可以用gammu试试能不能识别设备

    校验提示文案

    提交
    收起所有回复
  • 可惜这套方案不支持电信手机号 [内伤]

    校验提示文案

    提交
    支不支持看模块,ec20全网通,所以移动联通电信都支持,文中之所以写了联通号是因为我的备号是联通的,为了便于区分,微信转发的程序名起了“联通号转发”,实际上这个名字随便

    校验提示文案

    提交
    电信的短信没有走4G,走的2G CDMA,首富家找了一圈就没找到能同时支持电信2G和4G的模块

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • 感谢分享,要是双苹果的话就不用这么麻烦了 [惊喜]

    校验提示文案

    提交
    iMessage根本没办法开 [狂汗]

    校验提示文案

    提交
    可怜的网络 [皱眉]

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 大佬 这个最多支持几个手机卡 [高兴]

    校验提示文案

    提交
    一个,就像群里各位大佬说的,不实用,自己觉得好玩就行 [狂汗]

    校验提示文案

    提交
    收起所有回复
  • 安卓短信转发相对容易实现, 我用的是ios, 手里有4s 用来转发短信, 然后呼叫转移, 这个方法已经用了几年了.

    校验提示文案

    提交
    我的4s拆了用相框裱起来挂在墙上了 [暗地观察] 现在备机是部6

    校验提示文案

    提交
    一个4s, 一个6都是用来短信转发的 [嘿嘿]

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 这是要搞黑产吗

    校验提示文案

    提交
    技术是手段,做什么只在人的一念之间

    校验提示文案

    提交
    收起所有回复
  • Gammu支持uart接口的4g模块吗?

    校验提示文案

    提交
    走usb还是gpio,只是形式上的差别,通讯没问题,对gammu只是配置差异,看到过gammu+gpio的例子,但我真的没实践过,所以没发言权 [暗地观察]

    校验提示文案

    提交
    收起所有回复
  • 我用的旧的安卓手机,双卡双待,装tasker,连上WiFi,申请server酱。基本上短信没有漏转发的。还可以通过关键词过滤转发特定的短信。ifttt发邮件也可以,用来作为tasker的备份。
    树莓派这个研究过貌似只能插一张卡。。。手里的闲号太多了。。。
    [无奈]

    校验提示文案

    提交
    server酱自从被举报过之后,体验已经大不如前,我也就家里软路由在用了

    校验提示文案

    提交
    安卓手机tasker经常被杀后台😭

    校验提示文案

    提交
    收起所有回复
  • 不觉明厉,先关注。应该是个大神,奉上我的银两,请笑纳。 [赞]

    校验提示文案

    提交
    不是什么大神,感谢 [喜极而泣]

    校验提示文案

    提交
    收起所有回复
  • 楼主厉害。。。我也想弄一个。我想问,楼主学什么的呀,这么厉害。

    校验提示文案

    提交
    网上其实有很多例子可以参考,但可能并不完全满足自己的要求,我只不过选择了自己相对熟悉的方式实现,谈不上厉害,这世界大牛太多了…

    校验提示文案

    提交
    收起所有回复
  • 想发短信咋弄呀,
    可以用企业微信直接发短信不?

    校验提示文案

    提交
    可以,网上有教程,搜搜看

    校验提示文案

    提交
    收起所有回复
  • 请教,4b支持这样搞吗?4b能否搞定微信信息转发?

    校验提示文案

    提交
    可以,没啥大的区别

    校验提示文案

    提交
    好的,谢谢

    校验提示文案

    提交
    收起所有回复
  • 跟作者一样,居家理科男,喜欢修修补补diy,也有个小泰迪,敢问作者喜欢打扫卫生不?

    校验提示文案

    提交
    不喜欢,买了机器人了 [尴尬]

    校验提示文案

    提交
    EC20模块只能插一张sim卡,请问有能实现多张sim卡同时收短信的方案么?

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 转发短信的话其实随便一个安卓机+Tasker就解决了 %svtprm这套就能收到任何手机通知 然后设置发到电子邮箱就好

    校验提示文案

    提交
    只是转发的话方案很多

    校验提示文案

    提交
    安卓就是杀程序的问题

    校验提示文案

    提交
    收起所有回复
  • 移远的这个芯片,要买带SIM卡插槽的吗?照片里面没看到有插卡的地方?

    校验提示文案

    提交
    头图右侧冒出来的一点点蓝色就是sim卡

    校验提示文案

    提交
    收起所有回复
  • 中文乱码了。 [惊喜] 大佬,是修改python文件,还是修改环境变量?求指点

    校验提示文案

    提交
    是py文件内容乱码还是收到的短信乱码?

    校验提示文案

    提交
    转发的短信内容是乱码。收件人,时间的中文又没有乱码。 [皱眉]

    校验提示文案

    提交
    还有6条回复
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
883
扫一下,分享更方便,购买更轻松