Bash if -eq

From: ANT_THOMAS 9 Oct 2012 11:56
To: ALL1 of 14
Got a bash script for checking the speed of my router and rebooting when necessary. It is now time dependant but the line I've used is awful.

Here's the line
Bash code:
HOUR=$(date "+%H")
if [ "$SPEED" -le 7000 ] &&
[ "$HOUR" -eq 01 -o  "$HOUR" -eq 02 -o  "$HOUR" -eq 03 -o  "$HOUR" -eq 04 -o  "$HOUR" -eq 05 -o  "$HOUR" -eq 06 -o  "$HOUR" -eq 07 -o  "$HOUR" -eq 08 ]; then
blah blah blah


There is surely a nicer way to do the hour thing rather then using "-o" for each hour.

Something like this (but obviously something that actually works)

Bash code:
HOUR=$(date "+%H")
if [ "$SPEED" -le 7000 ] &&
[ "$HOUR" -eq 01,02,03,04,05,06,07,08 ]; then


Ideas on a postcard.
From: Peter (BOUGHTONP) 9 Oct 2012 12:32
To: ANT_THOMAS 2 of 14
Why can't you write:
code:
"$HOUR" -le 8


?
From: ANT_THOMAS 9 Oct 2012 13:01
To: Peter (BOUGHTONP) 3 of 14
Good point. For some reason it was because I was going to include 23 (11pm) but I don't think I want to.
From: Peter (BOUGHTONP) 9 Oct 2012 13:40
To: ANT_THOMAS 4 of 14
Well even then, a lt 8 or gt 23 would still be simpler than listing numbers.

But yeah, the Bash conditional stuff is super shitty, and if you are going to make this any more complex, I'd definitely consider doing it in a language that has proper ORs/etc.
From: ANT_THOMAS 9 Oct 2012 13:43
To: Peter (BOUGHTONP) 5 of 14

I hope it doesn't need to get any more complex.

 

Basically I want the script to only reboot the router at night, rather than have it loop when people are in the bathroom.

 

I shouldn't have to be making this (fail) :@ :@ :@

From: Peter (BOUGHTONP) 9 Oct 2012 13:49
To: ANT_THOMAS 6 of 14
Replace the bulb with an oil lamp. Problem solved. :)
From: sinkywinky 9 Oct 2012 14:47
To: ANT_THOMAS 7 of 14
You could remove the time checking stuff from the script and set a cron job to run it every hour between 1 and 8am.
From: ANT_THOMAS 9 Oct 2012 15:45
To: sinkywinky 8 of 14
I want it to still log the sync speed throughout the day. (I'm not sure why now).
From: koswix10 Oct 2012 08:09
To: ANT_THOMAS 9 of 14
Does it not log the speed changes in its own log? My sky router.does (i think...)
From: ANT_THOMAS10 Oct 2012 08:21
To: koswix 10 of 14
Maybe, but the web admin is very slow.
From: 99% of gargoyles look like (MR_BASTARD)18 Oct 2012 06:17
To: ANT_THOMAS 11 of 14
quote: ANT_THOMAS

Got a bash script for checking the speed of my router and rebooting when necessary. It is now time dependant but the line I've used is awful.

quote: ANT_THOMAS

Basically I want the script to only reboot the router at night, rather than have it loop when people are in the bathroom.

So if I've understood this correctly, you want your router to check its speed and reboot only if someone's not using the connection? Dumb question: why not just get it to (check and) reboot once before a new user session?

From: ANT_THOMAS18 Oct 2012 06:57
To: 99% of gargoyles look like (MR_BASTARD) 12 of 14

Eh? New user session?

 

There's always things connected to it using the connection. So it's not really a time with no activity, just much less. And detecting a "new user session" can't be easy.

From: 99% of gargoyles look like (MR_BASTARD)18 Oct 2012 08:42
To: ANT_THOMAS 13 of 14
quote: ANT_THOMAS

Eh? New user session?

When real people, who care about d/l speed are using the connection.

quote: ANT_THOMAS

And detecting a "new user session" can't be easy.

Au contraire, it doesn't have to be detected, it's the time when real people (if you have any in Manchester) start to use the connection. Innit?

From: ANT_THOMAS18 Oct 2012 09:10
To: 99% of gargoyles look like (MR_BASTARD) 14 of 14

That varies far too much.

And using it at a slower sync for browsing is better than waiting for it to reboot. Also, if I was to reboot just before I get back from work there's a good chance I'll go to the loo when I get home, fucking the whole thing up.

I'm sticking to early hours reboots and manual ones if I'm really bothered. Since 4mbps is actually fine for casual browsing, just not streaming and torrenting stuff quickly.