如何在 Windows 中使用 bash 脚本在华为 E3372 4G USB 加密狗上“启用移动数据”

问题描述 投票:0回答:1

我在 Win8.1 上使用华为 E3372 4G USB 适配器。该加密狗的设置可以通过浏览器输入 192.168.8.1 进行访问,并且用户可以通过手动单击“启用移动数据”按钮来启用 4G 连接。

这是我尝试用于“启用移动数据”连接的脚本,因为我知道我只在第 4 行做错了一些事情:

#!/bin/bash

curl -s -X GET "http://192.168.8.1/api/webserver/token" > token.xml
TOKEN=$(grep -v '<?xml version="1.0" encoding="UTF-8"?><response><token>' -v '</token></response>' token.xml)

curl "http://192.168.8.1/api/dialup/mobile-dataswitch" -H "Host: 192.168.8.1" -H "User-Agent: Mozilla/5.0 (Windows NT 6.3; rv:68.0) Gecko/20100101 Goanna/4.8 Firefox/68.0 PaleMoon/29.0.1" -H "Accept: */*" -H "Accept-Language: en-US,en;q=0.5" --compressed -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8;" -H "_ResponseSource: Broswer" -H "__RequestVerificationToken: $TOKEN" -H "X-Requested-With: XMLHttpRequest" -H "Referer: http://192.168.8.1/html/content.html" -H "Cookie: SessionID=AgVjkIjBxOC0xPbys3nne7rA4I8GXNzUkZCcSOGPR8P3xss8XOuqRbdb0EgHidXhQXZ903xf0nk0F8J81ISqHpZ7kYvZaSW5wHWDqJ9w90pXj90cPwCm7F01fFcmp0gv" -H "Connection: keep-alive" --data-raw "<?xml version=""1.0"" encoding=""UTF-8""?><request><dataswitch>1</dataswitch></request>"

date
exec $SHELL

执行第一个curl命令后,xml文件的内容将如下所示:

<?xml version="1.0" encoding="UTF-8"?><response><token>ZsxY7Q9G90jh4FqUiAjxD9XmqLWf0rYg4RUNf6FoVzeTIlPPms0Ov1RERFFRY77o</token></response>

仅出于测试目的,如果我在 bash 脚本中手动插入令牌,它就像一个魅力:

#!/bin/bash

curl "http://192.168.8.1/api/dialup/mobile-dataswitch" -H "Host: 192.168.8.1" -H "User-Agent: Mozilla/5.0 (Windows NT 6.3; rv:68.0) Gecko/20100101 Goanna/4.8 Firefox/68.0 PaleMoon/29.0.1" -H "Accept: */*" -H "Accept-Language: en-US,en;q=0.5" --compressed -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8;" -H "_ResponseSource: Broswer" -H "__RequestVerificationToken: ZsxY7Q9G90jh4FqUiAjxD9XmqLWf0rYg4RUNf6FoVzeTIlPPms0Ov1RERFFRY77o" -H "X-Requested-With: XMLHttpRequest" -H "Referer: http://192.168.8.1/html/content.html" -H "Cookie: SessionID=AgVjkIjBxOC0xPbys3nne7rA4I8GXNzUkZCcSOGPR8P3xss8XOuqRbdb0EgHidXhQXZ903xf0nk0F8J81ISqHpZ7kYvZaSW5wHWDqJ9w90pXj90cPwCm7F01fFcmp0gv" -H "Connection: keep-alive" --data-raw "<?xml version=""1.0"" encoding=""UTF-8""?><request><dataswitch>1</dataswitch></request>"

date
exec $SHELL

我找到了几个相同或相似加密狗的建议,但没有一个对我有用,这一定是由于我的知识不足。我的求救是关于最上面脚本的第 4 行。我显然在某个地方犯了错误。

预先感谢您的帮助。

bash curl usb 4g dongle
1个回答
0
投票

当我运行您的

grep -v ... -v ... token.xml
电话时,我收到错误:

$ grep -v '<?xml version="1.0" encoding="UTF-8"?><response><token>' -v '</token></response>' token.xml
grep: </token></response>: No such file or directory

填充

TOKEN
后,我建议您添加
typeset -p TOKEN
(以显示
TOKEN
的内容);我猜
TOKEN
不包含您认为的内容。

虽然 xml 可能应该由支持 xml 的工具解析,但如果您 100% 确定

token.xml
中内容的格式,那么以下内容应该为您提取令牌:

$ sed -En 's|.*<token>(.*)</token>.*|\1|p' token.xml
ZsxY7Q9G90jh4FqUiAjxD9XmqLWf0rYg4RUNf6FoVzeTIlPPms0Ov1RERFFRY77o

然后使用以下

TOKEN=$(...)
行更新您的脚本:

$ TOKEN=$(sed -En 's|.*<token>(.*)</token>.*|\1|p' token.xml)
$ typeset -p TOKEN
declare -- TOKEN="ZsxY7Q9G90jh4FqUiAjxD9XmqLWf0rYg4RUNf6FoVzeTIlPPms0Ov1RERFFRY77o"
© www.soinside.com 2019 - 2024. All rights reserved.