在Linux系统中发送短信是企业通信、自动化监控和告警通知中常见的需求,通过合理利用工具和API,可以实现高效、稳定的短信发送功能,以下从实现方式、工具选择、配置步骤及注意事项等方面进行详细说明。

基于命令行工具的短信发送
对于简单的短信发送需求,可通过命令行工具结合短信网关实现,常见工具包括Gammu和Wammu,它们支持通过手机或调制解调器发送短信。
安装与配置
以Gammu为例,首先通过包管理器安装:
# Debian/Ubuntu系统 sudo apt-get install gammu # CentOS/RHEL系统 sudo yum install gammu
安装完成后,使用gammu-detect命令自动检测设备配置:
sudo gammu-detect
这将生成/etc/gammurc配置文件,需填写设备路径(如/dev/ttyUSB0)、连接类型及短信中心号码等信息。
发送短信
配置完成后,通过以下命令发送短信:

echo "短信内容" | gammu sendsms TEXT "+8613800138000"
其中TEXT表示短信类型,+8613800138000为接收方号码,此方法适合单条短信发送,但需确保设备始终连接且网络稳定。
通过短信网关API发送
对于企业级应用,通过HTTP API调用短信网关服务更为灵活,常见的短信服务商(如阿里云、腾讯云、Twilio等)提供RESTful API,支持Linux脚本调用。
准备工作
- 注册短信服务商账号,获取API Key、Secret及签名模板。
- 确保服务器能访问服务商API地址(部分需配置防火墙规则)。
脚本实现示例
以Python为例,使用requests库调用API:
import requests
import json
url = "https://sms.example.com/api/send" # 替换为实际API地址
params = {
"apikey": "your_api_key",
"secret": "your_secret",
"mobile": "+8613800138000",
"content": "您的验证码是12345,5分钟内有效。"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=params, headers=headers)
result = response.json()
if result["code"] == 0:
print("短信发送成功")
else:
print(f"发送失败: {result['msg']}")
将脚本保存为send_sms.py,通过python3 send_sms.py执行,此方式支持批量发送、模板变量替换,适合高频场景。
集成到自动化系统
在运维监控或告警场景中,可将短信发送功能集成到Zabbix、Prometheus等系统中,以Zabbix为例,通过自定义媒体类型实现短信告警。

配置Zabbix媒体类型
- 登录Zabbix管理界面,创建“媒体类型”,选择“脚本”类型,并指定调用短信发送脚本的路径(如上述Python脚本)。
- 在用户设置中关联该媒体类型,并配置接收号码。
编写告警触发脚本
在Zabbix的AlertScriptsPath目录下创建脚本(如send_zabbix_sms.sh):
#!/bin/bash mobile=$1 content=$2 python3 /path/to/send_sms.py "$mobile" "$content"
赋予执行权限后,Zabbix触发告警时会自动调用该脚本发送短信。
注意事项
- 合规性:发送短信需遵守当地法律法规,确保内容合法,避免发送垃圾信息。
- 频率限制:短信服务商通常对发送频率有限制,高频发送可能导致账号被封禁,需合理控制发送间隔。
- 错误处理:在脚本中添加重试机制和错误日志记录,确保发送失败时可追溯原因。
- 成本控制:根据发送量选择合适的套餐,企业用户可考虑购买专属通道降低成本。
通过以上方法,可根据实际需求选择合适的Linux短信发送方案,无论是简单的命令行操作,还是复杂的系统集成,均能实现高效稳定的短信通知功能,为业务自动化提供有力支持。















