After years of great service, our Draytek Vigor 2800 seems to be having problems after running for a few days of allowing HTTPS in to our network, which is only solved by rebooting the router. For the life of me I can’t upgrade the firmware using either the TFTP or FTP approach. So giving up, I’ve adopted the brute force approach of scheduling a reboot every night. To do this I considered scripting the appropriate Telnet commands to the router, but that would involve some custom or third party code. (Telnet, being a duplex protocol means you can’t simply pipe commands to telnet.exe from a batch file, you have to use something like expect to script a Telnet session.)
The simplest, lowest-tech approach (and they’re always the best, right?) I found was merely to mimic the reboot page on the router web management UI with the following Windows Scripting Host script:
////// RebootRouter.js //////// // Change these for your environment var ROUTER_IP = "192.168.0.1"; var ROUTER_USER = "admin"; var ROUTER_PASSWORD = "pA55w0rd"; var http = new ActiveXObject("Microsoft.XMLHTTP"); http.open("POST", "http://" + ROUTER_IP + "/cgi-bin/reboot.cgi", false, ROUTER_USER, ROUTER_PASSWORD); http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); http.send("sReboot=Current&submit=OK"); // For debugging/logging un-comment the following lines: // WScript.Echo(http.status + " " + http.statusText); // WScript.Echo(http.responseText);
Save this as RebootRouter.js, update the values accordingly and schedule for a appropriate time using Control Panel > Scheduled Tasks.