zabbix采用短信猫报警无法发送中文的问题

我正在调试zabbix短信报警,遇到无法发送中文的问题,具体情况如下:
调试环境:
zabbix 3.0.5;
Linux centos 6.8;
短信猫 simens MC35i;
短信猫串口直连Linux服务器,zabbix直接调用设备/dev/ttyS1;
问题描述如下:
1.报警信息为英文时,发送短信正常;报警信息包含中文时,发送失败;报错如下:Expected [+CMGS: ] received [OK];
2.使用gnokii工具发送中文短信正常,发现其初始化流程中有修改短信模式的流程(at+cmgf=0);
3.短信猫的短信模式初始化为text模式,这个模式无法发送中文,通过minicom终端调试发现初始化后为text模式(at+cmgf=1),修改为pdu模式,退出minicom(不进行reset),通过zabbix 发送测试短信失败,再次进入minicom发现再次改为text模式;
怀疑zabbix调用短信猫时进行了初始化,该如何验证?请各位大神指导一下,如何排错···多谢

阅读 4.6k
2 个回答

已经搞清楚问题原因,查看源码后发现zabbix调用短信猫时,确实有初始化,代码如下:
zbx_sms_scenario scenario[] =

{
    {ZBX_AT_ESC    , NULL        , 0},    /* Send <ESC> */
    {"AT+CMEE=2\r"    , ""/*"OK"*/    , 5},    /* verbose error values */
    {"ATE0\r"    , "OK"        , 5},    /* Turn off echo */
    {"AT\r"        , "OK"        , 5},    /* Init modem */
    {"AT+CMGF=1\r"    , "OK"        , 5},    /* Switch to text mode/
    {"AT+CMGS=\""    , NULL        , 0},    /* Set phone number */
    {number        , NULL        , 0},    /* Write phone number */
    {"\"\r"        , "> "        , 5},    /* Set phone number */
    {message    , NULL        , 0},    /* Write message */
    {ZBX_AT_CTRL_Z    , "+CMGS: "    , 40},    /* Send message */
    {NULL        , "OK"        , 1},    /* ^Z */
    {NULL        , NULL        , 0}
};

text 模式不支持中文,将其改为pdu模式即可。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题