坎德人的小包包

欧剃,游荡的坎德人,在他的旅途中收集了许许多多有趣的东西。

发表日期:2012-02-02  原创

命令行下发送飞信到好友爪机

—— 最近爱上终端命令行界面的软件,搭配SSH + Tmux的远程使用,挂irc啥的完全无压力。但是跟人短信聊天还是免不了要开个图形界面的飞信,太蛋痛了,怎么办?

作者:欧剃


最近爱上终端命令行界面的软件,搭配SSH + Tmux的远程使用,挂irc啥的完全无压力。但是跟人短信聊天还是免不了要开个图形界面的飞信,太蛋痛了,怎么办?

经寻觅,找到了这个玩意。可以搭配Tmux/Screen使用,在命令行下发短信的效果很棒。

cliofetion 是 libofetion 的一个实现,可以支持中国移动的飞信协议,往你的飞信好友的手机上发短信。 目前可以在大多数 POSIX 兼容系统上编译通过,已测试的环境有 Linux,FreeBSD 和 Mac OSX。

  • 项目主页: http://code.google.com/p/ofetion 和 http://basiccoder.com/openfetion
  • 下载点: http://code.google.com/p/ofetion/downloads/list

最新版本是 cliofetion-standalone-2.2.2.tar.gz,需要libofetion库。

不过,这货每次都需要手动填写登录账户信息和对方发送,太麻烦了,于是手写了一个简单的 python 脚本,调用cliofetion,给人发短信。

#!/usr/bin/python
# -*- coding: UTF-8 -*- 
# FileName: SendSMS.py

import commands

MOBILENUM = 12345678901   #你的移动电话号码
PASSWD = '******'         #你的飞信密码
EMPTYNAME = '张三'          #默认发信对象

#filename = SendSMS
NumDict = { 'self':MOBILENUM,
            '自己':MOBILENUM,
            '张三':77777777777,
            '李四':33333333333,
            '赵五':22222222222,
            '钱咪':11111111111,
            '孙凌':22222223123,
            #可以按此格式继续添加通讯录
          } 


QuitFlag = True

while(QuitFlag):
   ErrorStatus = True
   targetname = ''
   targerNumber = ''
   print ''
   print '--------------CliOpenFetion v2.2.2---------------'
   targetname = raw_input('  * 请输入要发信的号码(输入quit退出):')
   
   if targetname == 'quit' or targetname == 'exit':
      QuitFlag = False
      ErrorStatus = False
   elif targetname == 'help':
      print '  * 目前通讯录中含有:'
      print '  *','、'.join(i for i in NumDict.keys())
      ErrorStatus = False
   elif targetname == '':
      targetname = EMPTYNAME
   elif targetname.isdigit():
      targetNumber = targetname
      if NumDict.values().__contains__(targetname):
         for i in NumDict.items():
            if i[1] == targetname:
               targetname = i[0]
               break
   else:
      ErrorStatus = False
      targetNumber = ' <错误的输入,请输入一个手机号码,或可用的昵称。>'
   

   if NumDict.__contains__(targetname):
      ErrorStatus = True
      targetNumber = NumDict.get(targetname)

   if ErrorStatus:
      print '  * 发信目标为:%s(%s)' % (targetname,targetNumber)
   elif targetname == 'help':
      print
      #do nothing
   elif targetname == 'quit':
      print '',
      #do nothing
   elif targetname == 'exit':
      print '',
      #do nothing
   else:
      print targetNumber

   if QuitFlag and ErrorStatus:
      print '  * 请输入要发送的信息,按回车结束:'
      sendMSG = raw_input('\> ')
      if len(sendMSG) > 0:
         OUTCMD = 'cliofetion -f %s -p %s -t %s -d "%s"' % (MOBILENUM,PASSWD,targetNumber,sendMSG)
         print '  * 消息发送中,请稍候……'
         SendResult = commands.getstatusoutput(OUTCMD)
         if SendResult[0] == 0:
            print '  * 已经成功发送至 %s(%s)!' % (targetname,targetNumber) #, SendResult
            print
         else:
            print '  * 出现错误: ' ,SendResult[0]
            print '-------------------------------------------------'
            print SendResult[1:]

      else:
         print ' <无信息内容,取消发送……>'

print ' * 关闭程序...'
print '-------------------------------------------------'

本文已发布于纯美苹果园,作者:欧剃。转载请保留此行

标签:Linux

Powered by Jekyll on Github.io
2022 © 欧剃