gnokii

来自百合仙子's Wiki
跳转到导航 跳转到搜索

手机工具套件,可从 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 指令可以关闭此类报告。

外部链接