Linux 通过命令行发送短信,华为E3372保存到草稿

Linux 通过命令行发送短信,华为E3372保存到草稿,linux,bash,usb,modem,Linux,Bash,Usb,Modem,我遇到的问题是,当我执行下面的脚本来发送消息时,它会向我显示一个ok响应,消息将保存在草稿部分,而不是实际发送 #! /bin/bash [[ ! -f ~/.config/hilink.conf ]] && printf "HILINK_PROTO=http\nHILINK_HOST=192.168.8.1\nHILINK_PORT=80\nHILINK_USER=user\nHILINK_PASSWORD=password\n" >~/.config

我遇到的问题是,当我执行下面的脚本来发送消息时,它会向我显示一个ok响应,消息将保存在草稿部分,而不是实际发送

#! /bin/bash
[[ ! -f ~/.config/hilink.conf ]] && printf "HILINK_PROTO=http\nHILINK_HOST=192.168.8.1\nHILINK_PORT=80\nHILINK_USER=user\nHILINK_PASSWORD=password\n" >~/.config/hilink.conf



source ~/.config/hilink.conf

SesTokInfo=$(curl -s \
--url     "$HILINK_PROTO://$HILINK_HOST:$HILINK_PORT/api/webserver/SesTokInfo" \
--header  "Host:$HILINK_HOST" \
--user    "$HILINK_USER:$HILINK_PASSWORD" 
)
HILINK_COOKIE=$(echo "$SesTokInfo"|grep SessionID=|cut -b 10-147)
HILINK_TOKEN=$(echo "$SesTokInfo"|grep TokInfo|cut -b 10-41)

CONTENT=$1
PHONE=$2
DATE=$(date '+%Y-%m-%d %T')
LENGTH=${#CONTENT}

curl -fSs $HILINK_PROTO://$HILINK_HOST:$HILINK_PORT/api/sms/send-sms \
--header "Host:$HILINK_HOST" \
--header "Cookie:$HILINK_COOKIE" \
--header "__RequestVerificationToken:$HILINK_TOKEN" \
--user   "$HILINK_USER:$HILINK_PASSWORD" \
--data   "<request><Index>1</Index><Phones><Phone>$PHONE</Phone></Phones><Sca>0220227672</Sca><Content>$CONTENT</Content><Length>$LENGTH</Length><Reserved>1</Reserved><Date>$DATE</Date></request>"
#/bin/bash
[!-f~/.config/hilink.conf]]&&printf“hilink\u PROTO=http\nHILINK\u HOST=192.168.8.1\nHILINK\u PORT=80\nHILINK\u USER=USER\nHILINK\u PASSWORD=PASSWORD\n”>~/.config/hilink.conf
source~/.config/hilink.conf
SesTokInfo=$(curl-s\
--url“$HILINK\u PROTO://$HILINK\u主机:$HILINK\u端口/api/webserver/SesTokInfo”\
--标题“主机:$HILINK\u主机”\
--用户“$HILINK\u用户:$HILINK\u密码”
)
HILINK_COOKIE=$(echo“$SesTokInfo”| grep SessionID=| cut-b 10-147)
HILINK|U令牌=$(回显“$SesTokInfo”|格雷普TokInfo |剪切-b 10-41)
内容=$1
电话=2美元
日期=$(日期'+%Y-%m-%d%T')
长度=${#内容}
curl-fSs$HILINK\u PROTO://$HILINK\u主机:$HILINK\u端口/api/sms/send sms\
--标题“主机:$HILINK\u主机”\
--标题“Cookie:$HILINK\u Cookie”\
--标题“\uuu请求验证项:$HILINK\u令牌”\
--用户“$HILINK\u用户:$HILINK\u密码”\
--数据“1$PHONE0220227672$CONTENT$LENGTH1$DATE”

经过一番修补,我意识到我的E3372h-320将不同的XML标记返回给了您使用的标记,于是我想出了下面的代码,看起来很管用

您需要从repo安装xmlstarlet包

#!/bin/bash

DATA=`curl --noproxy "*" http://192.168.8.1/api/webserver/SesTokInfo`
SESSION_ID=`echo "$DATA" | xmlstarlet sel -t -v '//SesInfo' -n`
TOKEN=`echo "$DATA" | xmlstarlet sel -t -v '//TokInfo' -n`

curl --noproxy "*" http://192.168.8.1/api/sms/send-sms -H "Cookie: $SESSION_ID" -H "__RequestVerificationToken: $TOKEN" --data "<?xml version='1.0' encoding='UTF-8'?
><request><Index>-1</Index><Phones><Phone>$1</Phone></Phones><Sca></Sca><Content>$2</Content><Length>-1</Length><Reserved>1</Reserved><Date>-1</Date></request>"
#/bin/bash
数据=`curl--noproxy“*”http://192.168.8.1/api/webserver/SesTokInfo`
SESSION_ID=`echo“$DATA”| xmlstarlet sel-t-v'//SesInfo'-n`
TOKEN=`echo“$DATA”| xmlstarlet sel-t-v'//TokInfo'-n`
卷曲--noproxy“*”http://192.168.8.1/api/sms/send-sms -H“Cookie:$SESSION\u ID”-H“\u RequestVerificationToken:$TOKEN”-数据”-1$1$2-11-1”

此命令的简单版本(不使用变量)是否可以从命令行运行?祝你好运。这能回答你的问题吗?