Background
I am used to restart my servers on a scheduled basis. Now I want the same for my ADSL router.
This is my reason: When a random failure occurs, I am used to normally try to reboot the servers , interfaces and related equipments (if possible) as the first step before any other troubleshooting (e.g: changing configurations, etc). In fact there are times that this corrects the problem (The service starts working as expected). This may be because when a system is long time up (sometimes, depending on the software and services), it may become unresponsive or faulty. May be the software fails to release some memory, unlock some resources , etc
Now for some services which scheduled down time is acceptable during non-work hours, I schedule the automatic restart. This way, such type of problems appear less frequently. And now if a problem occurs during work-hours, I don't need to restart the whole service, instead I will resume troubleshooting like after I had restarted them.
What we have
This is a Billion 5000 Series router and supports TELNET, HTTP and SNMP for management.
Telnet method (Updated)
This is possible to reboot the router via telnet command:
C:\>telnet 192.168.1.1
Password:********
router>set reboot
So near, just need a script that automatically telnets, pushes password characters and issues the 'set reboot' command. [The approach of using expect suggested by SvenW]
HTTP method
Good to mention that I utilize a software[1] application for monitoring my ADSL connection speed and noise margin via HTTP interface (the software itself, instead of a browser application, connects, logs in unattendedly and reads the values from HTTP interface and display them in a graph!).
I wonder if it is possible to achieve the SysRestart with similar approach (A script that automatically logs in and clicks the SysRestart button!)
The restart page:
- Picture of the page:
The source HTML of the page:
<html><head> <meta http-equiv=Content-Script-Type content=text/javascript> <meta http-equiv=Content-Style-Type content=text/css> <meta http-equiv=Content-Type content="text/html; charset= iso-8859-1"> <link rel="stylesheet" href="../css/style.css" type="text/css"> <script language="JavaScript"> function doRefresh() { alert("Reboot Complete"); parent.navigation.location.href = "/navigation-status.html"; window.location.href = "../status/status_deviceinfo.htm"; } function doLoad() { } </script> </head><body onload="doLoad()"> <FORM METHOD="POST" ACTION="/Forms/tools_system_1" name="System_Restore"> <table width="760" border="0" align=center cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td height="5" class="light-orange" colspan="5"> </td></tr><tr> <td width="150" height="30" class="title-main"> <font color="#FFFFFF">System Restart</font> </td><td width="10" class="black"> </td><td width="150"></td><td width="10"> </td><td width="440"></td></tr><tr> <td class="light-orange"> </td><td class="light-orange"></td><td class="tabdata"><div align=right> <font color="#000000">System Restart with</font> </div></td><td class="tabdata"><div align=center>:</div></td><td class="tabdata"> <INPUT TYPE="RADIO" NAME="restoreFlag" VALUE="0" CHECKED> <font color="#000000">Current Settings</font> </td></tr><tr> <td class="light-orange"> </td><td class="light-orange"></td><td class="tabdata"> </td><td class="tabdata"> </td><td class="tabdata"> <INPUT TYPE="RADIO" NAME="restoreFlag" VALUE="1"> <font color="#000000">Factory Default Settings</font> </td></tr><tr> <td class="light-orange"> </td><td class="light-orange"></td><td width="150"> </td><td width="10"> </td><td width="440"> </td></tr></table><table width="760" border="0" align=center cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td width="160" class="black" height="42" > </td><td width="160" class="orange"> </td><td width="440" class="orange"> <INPUT TYPE="SUBMIT" NAME="Restart" VALUE="RESTART"> </td></tr></table></div></form> </body></html>
SNMP Method
The router also has support for SNMP v2 read and write communities. I thought it might be possible to perform it this way.
In fact, by some search I found[2] that some people use SNMP to restart their devices (But I can't find an OID for my router to pass for performing a reset)
For example it appear that those who have one of these devices can reboot them using these OIDs:
'.1.3.6.1.4.1.207.8.4.4.3.2.0', # Allied Telesyn restart
'.1.3.6.1.4.1.11.2.14.11.1.4.1.0', # Hewlett-Packard hpicfReset
'.1.3.6.1.4.1.9.5.1.1.9.0', # Cisco CatOS sysReset
'.1.3.6.1.4.1.9.2.9.9.0', # Cisco IOS tsMsgSend
'.1.3.6.1.4.1.529.9.8.0.0' # Ascend sysReset
SNMP Walk
Using SNMP walk I could get a list of more than five hundred OIDs such as:
.1.3.6.1.4.1.16972.5.1.1.0
.1.3.6.1.4.1.16972.4.10.0
...etc (568 more)...
But I have currently no idea how can I pick one among them (specially afraid to test snmp-write on them!).
Some more info
Some other (walked) OID and values that might help:
.1.3.6.1.4.1.16972.1.3.0; Trendchip TC3162 T14F7_3.0
.1.3.6.1.4.1.16972.5.1.1.0; www.huawei.com
.1.3.6.1.4.1.16972.1.6.0; Ras Ver:2.10.4.0(UE0.C2C)3.6.0.0 DMT Ver:3.6.0.0
How can you help ?
- Suggesting a way to script a restart via SNMP (Requires finding the OID first!?)
- Suggesting a way to script a restart via HTTP
- Suggesting a way to script a restart via telnet
- Suggesting a way to script a restart (any other ways!)
FootNotes: