如何在Windows中用Bash脚本启用华为E3372 4G USB网卡移动数据
华为E3372 4G网卡自动启用移动数据脚本问题及解决
编辑说明:解决方案可在问题底部查看!
我在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命令后,token.xml的内容如下:
<?xml version="1.0" encoding="UTF-8"?><response><token>ZsxY7Q9G90jh4FqUiAjxD9XmqLWf0rYg4RUNf6FoVzeTIlPPms0Ov1RERFFRY77o</token></response>
测试发现,若手动在脚本中填入token,脚本可正常运行:
#!/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行,希望得到帮助。
感谢您的协助。
===== 编辑说明:已找到解决方案! =====
markp-fuso的建议为我指明了解决方向。我发现除了每次开关操作都会变化的token外,该网卡还有一个SesTokInfo参数,它不会随开关操作改变(手动测试验证),但插拔网卡可能会使其变化。
以下是经两次测试验证可行的最终脚本:(注:此脚本用于启用移动数据,若要禁用,需将<dataswitch>1</dataswitch>中的1改为0)
#!/bin/bash curl -s -X GET "http://192.168.8.1/api/webserver/token" > token.xml curl -s -X GET "http://192.168.8.1/api/webserver/SesTokInfo" > sestoken.xml TOKEN=$(sed -En 's|.*<token>(.*)</token>.*|\1|p' token.xml) SESTOKEN=$(sed -En 's|.*<SesInfo>(.*)</SesInfo>.*|\1|p' sestoken.xml) typeset -p TOKEN typeset -p SESTOKEN 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=$SESTOKEN" -H "Connection: keep-alive" --data-raw "<?xml version=""1.0"" encoding=""UTF-8""?><request><dataswitch>1</dataswitch></request>" date exec $SHELL
内容的提问来源于stack exchange,提问作者Elio
相关产品推荐
相关产品推荐

