• 背景:人在国外刚下飞机   咳咳,人在国外,国内很多网络,电话服务都需要短信验证,一直以来都用的双卡手机来解决这个问题。最近换了单卡手机,琢磨着3g上网卡应该可以接受短信,再配合7D24H运行的树莓派,做一个短信中转服务,应该不难
  • 原理:3G上网卡插国内已经开通漫游服务的卡,将接受的短信保存后,自动转发到自己常用的邮箱里。
  • 适用人群:国外党,单卡手机双卡党,双卡手机三卡党。。。
  • 我的硬件:树莓派3B,Aliexpress上淘的华为3G上网卡e1750
    • 3G上网卡的选择

      • 建议找那种写了unlock的,否则可能挑运营商
      • 网上找找别人用的啥就卖啥,买回来识别不了就折腾了
      • 虽然上网卡一般都可以收发短信,接打电话,甚至数据上网,但本文只需要接收短信的功能

1. 调试3G上网卡

插上3G上网卡

root@raspberrypi:/var/spool/gammu/inbox# lsusb
Bus 001 Device 012: ID 148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter
Bus 001 Device 014: ID 12d1:140c Huawei Technologies Co., Ltd. E180v
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

可以看到014就是上网卡(不知道型号为啥有点不一样)

root@raspberrypi:/var/spool/gammu/inbox# ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB3
root@raspberrypi:/var/spool/gammu/inbox#

然后找挂载的名字,一般来说最后插上的序号就最大,我的是ttyUSB3

一个更好的方法是使用ID,因为挂载点会变来变去 参考这里 General Gammu FAQ — Gammu 1.42.0 documentation

如果这里你没发现自己的设备,可能你需要换其他的卡或者自行寻找驱动了。。

接下来配置gammu

sudo apt-get install gammu #安装gammugammu-config#填一下刚才记下的挂载名
#port我用的默认at,可能不同卡需要调试其他的选择gammu identify #这里可以看到gammu识别了你的上网卡,电话卡信息

接下来配置gammu的短信daemon 代码里#汉字最好去掉,有时候会bug

sudo apt-get install gammu-smsdsudo vim /etc/gammu-smsdrc# Configuration file for Gammu SMS Daemon# Gammu library configuration, see gammurc(5)
[gammu]
# Please configure this!
port = /dev/ttyUSB3 #改自己的
connection = at
# Debugging
#logformat = textall# SMSD configuration, see gammu-smsdrc(5)
[smsd]
#RunOnReceive = /var/spool/gammu/auto_send_mail.sh #接收到短信便执行此script
service = files
logfile = syslog
# Increase for debugging information
debuglevel = 0# Paths where messages are stored
inboxpath = /var/spool/gammu/inbox/  #接收到的短信在这
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/

先不管自动执行的插件,我们先测试能否正常接收短信

systemctl start gammu-smsd.service
systemctl enable gammu-smsd.service

执行后给此电话发个短信,inbox里应该会出现发送的短信,以txt形式来存储

root@raspberrypi:/var/spool/gammu/inbox# ls
IN20170930_101810_00_95378_00.txt           IN20191108_142011_00_10655089321279372975_00.txt
IN20170930_110414_00_10690486_00.txt        IN20191108_142255_00_10655089321279372975_01.txt
IN20170930_110518_00_106980005858_00.txt    IN20191108_160925_00_95395_00.txt
IN20170930_111147_00_106980005858_00.txt    IN20191108_201701_00_1069149187561439_00.txt
IN20170930_140453_00_95395_00.txt           IN20191108_201701_00_1069149187561439_01.txt
IN20170930_144549_00_95511_00.txt           IN20191109_102158_00_95188_00.txt
IN20191107_231609_00_95188_00.txt           IN20191109_102731_00_95188_00.txt
IN20191107_232754_00_95188_00.txt           IN20191109_160608_00_10655025160989757920_00.txt
IN20191108_122718_00_10655025995188_00.txt  IN20191109_160608_00_10655025160989757920_01.txt
IN20191108_124816_00_10010_00.txt           IN20191109_204012_00_106550002800077575_00.txt
IN20191108_124816_00_10010_01.txt           IN20191109_204350_00_106901336930_00.txt
IN20191108_124816_00_10010_02.txt           IN20191109_204619_00_95188_00.txt
IN20191108_140653_00_95395_00.txt           IN20191109_204635_00_95188_00.txt
IN20191108_141001_00_95395_00.txt           IN20191109_205336_00_95188_00.txt

2.调试邮件发送服务

请参考这篇文章、同时注意文章内所有代码需在root下进行(因为服务是以root权限运行的,所以需要将各配置文件建立在/root里)https://blog.csdn.net/zhuyanjun0818/article/details/102992252

3.通过script连接1,2实现短信自动转发邮箱

现在开始配置自动转发服务

在1中我们看到gammu是支持收到短信后直接执行自定义任务的

具体的文档在https://wammu.eu/docs/manual/smsd/run.html#

其中有各种全局局部变量,包括短信的内容也有,所以我们想直接使用它

注意一句话:. You can use it together with NULL service 所以得先将服务类型改为null 才能使用变量


sudo vim /etc/gammu-smsdrc
。。。。。
[smsd]
RunOnReceive = /var/spool/gammu/auto_send_mail.sh #接收到短信便执行此script
#service = files
service = null
。。。。

配置后记得重启下

systemctl restart gammu-smsd.service
systemctl enable gammu-smsd.service

接下来书写自动转发的script

#!/bin/sh
for i in `seq $SMS_MESSAGES` ; doecho "\n \***************** \n \$SMS_1_TEXT \n \***************** \n \" |mutt -s "SMS send by $SMS_1_NUMBER" xxx@gmail.com
done

关于开机自启:

gammu identify和 systemctl restart gammu-smsd.service这个必须每次启动后延时(2分钟)执行一次,否则后面的短信daemon似乎会报错。我就把它放local.rc了。

(
sleep 120
gammu identify
systemctl restart gammu-smsd.service
)&

最后的效果图,还不错吧哈哈

使用USB 3G上网卡+树莓派搭建接受短信自动转发邮箱的服务相关推荐

  1. iphone短信自动转发_如何在iPhone上删除或转发个人短信

    iphone短信自动转发 Deleting an entire message thread on the iPhone is easy, but what if you want to just d ...

  2. 短信自动转发到MySQL_联移短信中间件

    ) 联移短信服务中间件向客户系统公开四个共享数据库表:待发送任务表(T_SendTask).已发送记录表(T_SentRecord).接收记录表(T_RecRecord).事件日志记录表(T_Even ...

  3. android实现短信自动转发

    我有两张手机卡,一张专门用来绑定银行卡的,一张拿来打电话用的.但是我的手机只能装一张银行卡,现在问题来了,我出门的就要带俩手机,非常麻烦.所以我就写了一个短信转发功能app,这样就可以只带一个手机出门 ...

  4. Tasker 手机短信自动转发

    js代码: //定义post方法 function posthttp(url, data) {     let xhr = new XMLHttpRequest();     xhr.addEvent ...

  5. android 短信自动转发功能

    1.首先需要申请权限 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:andro ...

  6. 短信自动转发到另一个手机_以 wmghz.com 为例,简单实现打一个网址自动就转到另一个网址...

    怎么简单实现打一个网址自动就转到另一个网址,以 wmghz.com为例 B103 [外贸干货组]星球里的成员都知道,这个组的网站全称是 waimaoganhuozu.com ,比较长,也容易输错.怎么 ...

  7. USB 3G上网卡讲解之一

    转载了一个比较详细的关于USB 3G上网卡的讲解,原文地址: http://blog.chinaunix.net/uid-20786208-id-3157021.html USB 3G卡热插拔那些事1 ...

  8. (4)用接口完成下面的任务。 1)定义一个手机(MobilePhone)接口,它有打电话(call)、接电话(receive)、发送短信(sendMsg)、接受短信(receiveMsg)的功能。 2

    (4)用接口完成下面的任务. 1)定义一个手机(MobilePhone)接口,它有打电话(call).接电话(receive).发送短信(sendMsg).接受短信(receiveMsg)的功能. 2 ...

  9. 在线接受短信的虚拟号码服务平台(SMS-Activate)的使用

    在注册ChatGPT时,由于需要使用海外手机号进行验证,但对于大多数国内人士来说,通常不具备自有国外手机号的条件,因此借助第三方平台提供的服务完成这一步骤成为不失为一个不错的选择.本文主要介绍在线接受 ...

最新文章

  1. 开启虚拟化技术之旅---1什么是虚拟化?
  2. 手把手教您如何用U盘给电脑安装WIN10系统详细教程
  3. Android平台Qt开发入门教程
  4. 动态获取textarea后面的p标签_HTML简单标签连起实现的小玩意:
  5. 【Tensorflow】深度学习实战05——Tensorflow实现Inception V3
  6. 【空间】C++内存管理
  7. 【笔记】ubuntu 16.04 centos 7如何配置sudo权限
  8. 转:嵌入式的经典书籍
  9. 编译和push services.jar的方法
  10. 校园导航系统课程设计,#校园管理系统
  11. tableau之仪表板与故事
  12. 1-1 Java基础和编程概述
  13. android 程序崩溃处理,Android应用崩溃的应急处理
  14. MP-2平面烟雾气体传感器介绍
  15. C# 和EmguCV
  16. Chronometer实现计时器 开始、暂停、停止功能
  17. PHP获取十月九号星期几,php日期获取星期几
  18. webaudio_WebAudio Deep Note,第5部分:增益节点
  19. Variable详解
  20. UVA11400(dp)

热门文章

  1. 知乎问答:为什么现在又流行服务器端渲染html?
  2. c++项目-----演讲比赛--附详细过程
  3. 微信小程序 云数据库使用(上)
  4. 将扩散模型用于目标检测任务,从随机框中直接检测!
  5. 老虎证券Java面经_老虎证券前端一面
  6. 奔跑吧,程序员:从零开始打造产品、技术和团队
  7. Java中apple导入那个包_在Java中,由Java编泽器自动导入而无需在程序中用import导入的包是()。A.java.appletB.java.awtC.j...
  8. SpringBoot整合elasticsearch-rest-client实战
  9. Vue 组件中的data为什么是一个函数?
  10. Vue实现简单音乐播放