Я нашел эту ссылку, которая, кажется, более или менее отвечает решению проблемы, хотя сценарий Linux над ним работал довольно лучше. Я обнаружил, что код завершения процесса ближе к концу не работал должным образом, поэтому я вынул его, и все было хорошо. Я также изменил сервисные команды в соответствии с обсуждением ниже и закончил с:
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd"
WScript.Sleep 100
WshShell.AppActivate "C:\Windows\system32\cmd.exe"
WScript.Sleep 1000
WshShell.SendKeys "telnet 192.168.0.1~"
WScript.Sleep 1000
WshShell.SendKeys "admin~"
WScript.Sleep 1000
WshShell.SendKeys "admin~"
WScript.Sleep 2000
WshShell.SendKeys "wan set service pppoa_0_38_0_d --protocol pppoa --conntrigger manual~"
WScript.Sleep 12000
WshShell.SendKeys "~"
WScript.Sleep 1000
WshShell.SendKeys "wan set service pppoa_0_38_0_d --protocol pppoa --conntrigger always~"
WScript.Sleep 6000
WshShell.SendKeys "~"
WScript.Sleep 1000
WshShell.SendKeys "logout~"
WScript.Sleep 6000
WshShell.SendKeys "~"
WScript.Sleep 1000
WshShell.SendKeys "exit~"
Вы просто копируете это в файл с суффиксом .vbs
, редактируете его, чтобы обновить IP-адрес маршрутизатора, имя пользователя и пароль, а также имя и протокол службы. Для последнего вам нужно будет войти в telnet
вручную и набрать:
wan show service
В вашем скрипте cmd
вызовите отредактированный скрипт с помощью:
start [/wait] reconnect.vbs
Используйте /wait
если хотите, чтобы скрипт завершился, прежде чем переходить к следующей команде.
Одна проблема, которую я обнаружил, заключается в том, что при вызове, когда маршрутизатор находится в режиме онлайн, он оставляет его в отключенном состоянии, но увеличение задержки между двумя вызовами службы исправило это, и вам может потребоваться настроить эту или некоторые другие задержки.