使用Shell脚本调用短信接口发送验证码短信教程
Shell脚本对接验证码短信接口DEMO示例


Web 应用、系统通知这些场景里,经常要给用户发验证码短信。这篇文章讲怎么用 Shell 脚本调用短信接口,把验证码短信发出去。接口选用 https://api.3yit.com/api/send-sms-single,通过 POST 请求携带参数,从返回结果里拿到发送状态。
准备工作
开始之前,先确认已经拿到短信服务商的接口文档,弄明白 sp_id、password(或签名算法)等关键信息。另外需要一个能跑 Shell 脚本的环境。
获取接口参数
登录智慧云信官网,选择对应的产品(如【验证码】),在上方选项卡中点击【开发者】→【HTTP开发文档】,就能看到具体的 API 方法名称,以及各参数的 key 和对应值,通常包括 sp_id、mobile、content、password 等。各参数含义如下:
sp_id:产品编号,全局唯一,一般由 6 位数字组成。mobile:接收短信的手机号码。content:短信内容,包含签名和正文。例如“【智慧云信】您的验证码是456790,请妥善保管”,其中【智慧云信】是签名,需在签名报备中申请;后面的提示语是短信模板,需在模板报备中申请,审核通过后才能发送。password:用 SP_ID 密码经 MD5 加密后生成的接口密码(非登录密码),由 32 位随机字符串组成。
编写 Shell 脚本
下面是一个简单的 Shell 脚本,用来调用短信接口发送验证码短信:
#!/bin/bash
# 接口配置信息
API_URL="https://api.3yit.com/api/send-sms-single"
SP_ID="5xxxxx" # 从接口文档中获取
PASSWORD="xxxxxxxxxxx" # 32位md5处理后的密码,从接口文档中获取
# 待发送的手机号和短信内容(假设验证码为123456)
MOBILE="176xxxxxxxx"
CONTENT="【签名】验证码:123456"
# 构建请求参数
PARAMS="sp_id=${SP_ID}&mobile=${MOBILE}&content=${CONTENT}&password=${PASSWORD}"
# 如果需要添加扩展号,可以在这里添加
# PARAMS="${PARAMS}&ext=123"
# 使用curl命令发送POST请求
# 注意:curl命令的-d选项用于发送POST请求的数据,-H选项用于设置请求头
RESPONSE=$(curl -s -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "${PARAMS}" "${API_URL}")
# 解析返回的JSON数据
# 这里我们使用jq命令来解析JSON,如果你的系统没有安装jq,请先安装
CODE=$(echo "${RESPONSE}" | jq -r '.code')
MSG=$(echo "${RESPONSE}" | jq -r '.msg')
MSG_ID=$(echo "${RESPONSE}" | jq -r '.msg_id')
# 输出结果
echo "发送结果:"
echo "code: ${CODE}"
echo "msg: ${MSG}"
echo "msg_id: ${MSG_ID}"
# 根据返回码判断发送是否成功
if [ "${CODE}" -eq 0 ]; then
echo "验证码发送成功,msg_id: ${MSG_ID}"
else
echo "发送失败:${MSG}"
fi
脚本说明
- 接口配置信息:脚本开头定义了接口地址、
sp_id和password,使用时替换成自己的值。 - 构建请求参数:用 Shell 的字符串拼接把参数拼成查询字符串,示例以密码方式验证;要用签名方式的话,按服务商提供的算法算出签名,再加到请求参数里。
- 发送 POST 请求:用 curl 发送。
-s是静默模式,不显示进度和错误信息;-X POST指定请求方法;-H设置请求头,指定Content-Type为application/x-www-form-urlencoded;-d传 POST 数据,也就是前面拼好的查询字符串。 - 解析返回 JSON:用 jq 命令解析,提取
code、msg、msg_id字段。jq 是轻量级的命令行 JSON 处理器,系统没装的话先安装。 - 输出结果:把提取到的字段打印出来,根据
code判断发送是否成功。
注意事项
- 不要在脚本里直接暴露
sp_id、password等敏感信息,建议用配置文件、环境变量等方式管理。 - 实际项目里要多处理几种错误情况,比如网络错误、请求超时,可以结合 curl 的返回值和 jq 的错误输出来判断。
- 建议把发送日志记录到文件,包括发送时间、手机号、验证码、响应结果,方便排查。
- 正式上线前,对发送功能做充分测试,确认功能正常稳定。
其他语言教程:PHP · Java · ASP · ASP.NET(C#) · JSP · Node.js · Delphi · Go · Python · Ruby · VB · C++ · C。更多信息见短信API接入指南。
代码里的 API 地址、账号和密码替换成你自己的就能跑通。如果还没有账号,去智慧云信官网注册一个,注册就能免费测试,验证码、通知、营销短信都支持。
作者:智慧云信通信技术团队
技术审核:国际短信与号码检测产品组
最后更新:2026-08-13
适用范围:国际短信、国际验证码短信、国际语音筛单、空号检测、号码实时检测等出海通信与号码检测场景。
本文结合智慧云信平台产品能力、客户接入问题和通道运营经验整理。不同国家/地区的 Sender ID、模板审核、计费方式和合规要求可能变化,实际发送前建议以当前通道审核与项目沟通结果为准。






