
This little guide will show you how I've set up my Raspi to reset my router every day (it's a long story but one of my routers is very unstable in its current set up and I haven't figured out how to fix it yet).
UPDATE:
I forgot to mention which router I use this script for. It's a ASUS RT N66U.
As Jeroen pointed out in the comments it can be a bit more complicated if you use other routers. If you have a Fritz!box (xs4all tends to supply these as modems/routers) you are in luck:
https://github.com/jpluimers/bash-fritzclient
REQUIREMENTS
- A raspberry pi
- A router with telnet access
- Some basic knowledge of linux, bash and cron jobs
LET'S GO!
First you probably need to install telnet:
#install telnet
sudo apt-get install telnet
Now you have telnet give it a try and log in with your router
#create a connection
telnet [ip-of-router]
You should be prompted for your username and password. Once you provided these, try the reboot command:
#reboot router
reboot
If this is all working we can move on to the next step: create a little bash script that runs a bunch of commands. It doesn't really matter where you put it but I like to have it in /home/pi/scripts/
#create directory
mkdir ~/scripts
#create file
nano ~/scripts/cronjob-router-reboot.sh
Paste the following script
#!/bin/sh
# replace cmd1 for the command to execute
host=192.168.0.179
port=23
user=YOURUSERNAME
pass=YOURPASSWORD
cmd1='reboot'
rm -f /home/pi/scripts/log-cronjob-router-reboot.txt
( echo open ${host}
sleep 2
echo ${user}
sleep 1
echo ${pass}
sleep 1
echo ${cmd1}
sleep 1
echo quit
sleep 2
) | /usr/bin/telnet > home/pi/scripts/log-cronjob-router-reboot.txt
You do need to edit the 'host', 'user' and 'pass' values at the top :). Press Ctrl+X, Y and then ENTER to save the file and exit.
Now make the file executable:
#make executable
chmod +x cronjob-router-reboot.sh
And try it out!
# run script
/home/pi/scripts/cronjob-router-reboot.sh
The last thing we need to do now is add it as a cron job. Cron, in case you don't know, is like Windows' Task Scheduler: it lets you run things at a given time and/or interval.
#open crontab
crontab -e
At the bottom, paste the following to start the job every day at 4:00 in the morning (see the text for a short description of that the first 5 characters do and how you can use them to schedule things)
0 4 * * * /home/pi/scripts/cronjob-router-reboot.sh
That's it! Save it and exit. Your raspberry should now reboot your router every day at 4:00 AM :D
That's a tad more complex with a Fritz!Box router. So I have created a repository for that : https://github.com/jpluimers/bash-fritzclient
ReplyDeleteAh I forgot to mention which router I use :P Will edit the post asap with that info and add your link. Thanks!
DeleteHello! I was trying to get this work, but no luck so far. It seems that the scrip does not press Enter after Username, Password and the defined command. so my screen when im running the script looks like this:
ReplyDeletepi@raspberrypi:~ $ sh telnet.sh
telnet> Trying 192.168.0.1...
Connected to 192.168.0.1.
Escape character is '^]'.
User Access Verification
Username: myuser
mypassword
help system
quit
Connection closed by foreign host.
any guess why it is like this? Im running raspbian.
I am very enjoyed for this blog. Its an informative topic.
ReplyDeleterouterlogin
netgear setup
I love your article.you can visit my website: whatsapp sniffer apk download android free
ReplyDeleteHi guys i tried this method but didnt work, but i have spent an entire day to make the router reboot with raspberry went through a lot of blogs, and specific command type looked good for my job, and i modified it, and it worked so i would like to help some people that needs this
ReplyDeleteCommand:
( echo admin; echo admin; sleep 3; echo admin; sleep 1; echo dev reboot; sleep 3;) | telnet 192.168.0.1
the sleep commands were a key for it to work because telnet somehow needs some time to register the commands...
the words after ´echo´ are the commands for my specific router (AC750 Wireless Dual Band Gigabit Router Model No. Archer C2) i had to use ´dev reboot´ not just reboot.
I used it as a scheduled job in OMV5 not as a bash script.
if you need any help just ask.
:)
Oh my god You Don't Know this App WarBox Apk
ReplyDelete