gnokii
跳转到导航
跳转到搜索
手机工具套件,可从 3G 网卡上读取短信等。
Arch 上需要 uucp 以及 lock 组的权限。
用例
短信
接收、显示并保存短信
gnokii --smsreader
读取短信。如读取所有信息并存储为 mbox 格式:
gnokii --getsms SM 0 end -f sms.mbox
删除所有短信:
gnokii --deletesms SM 0
注意短信存储器容量满之后会无法继续接收短信。
问题处理
收取短信到 mbox 乱码
gnokii 不能正确处理中文。以下 Python 代码可修正之:
#!/usr/bin/env python3
# vim:fileencoding=utf-8
import os
import sys
import email.header
for i in os.fdopen(sys.stdin.fileno(), encoding='utf-8', errors='replace'):
if i.startswith('Subject: '):
s = i[9:-1]
print('Content-Type: text/plain; charset=utf-8')
print('Subject:', email.header.Header(s, 'utf-8').encode())
else:
sys.stdout.write(i)
收取短信时随机报错
随机在收取到某条短信时报错:
Invalid remote number length (X)
这是因为短信消息中间有其它消息阻碍了解析,如:
read : [AT+CMGR=2<cr><cr><lf>^DSFLOWRPT:00001B9A,00000036,00000038,00000000000AC4A2,000000000038C9A1,00107AC0,00107AC0<cr><lf><cr><lf>+CMGR: 1,,22<cr><lf>0891683110700105F0060105810110F0414091415303234140914153032300<cr><lf><cr><lf>OK<cr><lf>]
其中 ^DSFLOWRPT (连接到移动网络时的数据服务流量报告)消息是不请自来的。同样的还有 ^BOOT 及 ^RSSI (信号强度报告)等。使用 ^CURC=0 指令可以关闭此类报告。