Sometimes with older hardware and ADSL connections, you just need to do a reboot every now and then. Newer modems let you do this, but the Billion one I had the joy of playing with today, didn’t.
Lets turn to a simple script running on a Linux box on the same subnet.
Turns out using ‘expect’ you can script a Telnet session. (I know, Telnet isn’t ideal). This could be used across switches, routers, modems, other random boxes that require a telnet interface.
Create a File
Add the code. You’ll need to change the “expect” values as necessary
#If it all goes pear shaped the script will timeout after 20 seconds.
set timeout 20
#First argument is assigned to the variable name
set name [lindex $argv 0]
#Second argument is assigned to the variable user
set user [lindex $argv 1]
#Third argument is assigned to the variable password
set password [lindex $argv 2]
#This spawns the telnet program and connects it to the variable name
spawn telnet $name
#The script expects login
#The script sends the user variable
#The script expects Password
#The script sends the password variable
#This hands control of the keyboard over two you (Nice expect feature!)
# Change the following value to whatever your devices reboot command is.
send "system restart\r"
Finally make the file executable
chmod +x modem-reboot.sh
Help it doesn’t work.
Under a stock standard Ubuntu 14.04 install I had to add the ‘expect’ package
sudo apt-get install expect
Thanks to http://stackoverflow.com/questions/7013137/automating-telnet-session-using-bash-scripts for the assistance and starting point of the script.