For quite a while now, we'd been having issues with the modem for our Time Warner Business Class service locking up, and needing to be power cycled to get back online. I've tried to track down what causes it, but haven't been able to reproduce the exact same conditions. It's not related to the overall traffic load, since the modem seemed as likely to freeze in the middle of the night on a weekend as it would during normal business hours on a weekday.
By polling the SNMP counters from our switch once a minute, I can see an increase in broadcast packets around the same time the modem would freeze, but that's about as deep as I've gotten.
After going through another round of multiple calls to the help line, and eventually getting a tech sent out again to replace the modem ( the 4th in 2 years ), I figured there had to be a better way than having to run across town to pull the plug.
I did some searching and reading up, then went to ebay and picked up a couple X10 control modules. For the actual switches, I got 2 AM 466 Appliance Modules, with the second unit on hand if I wanted to control the power on something else. Then to talk to them from the servers, an X10 CM11A computer interface module. The CM11A plugs into a serial port, and is driven by a Heyu.
While Heyu provides lots of nice automation features if I wanted to control lights and such, all I really needed was just a way to command the modules on and off. I used the script from this X10 DSL page as the base for my own, which attempts to do a simple DNS lookup from the local RoadRunner DNS servers. If it fails to get a response from both DNS servers, it will cycle the power on the modem.
So far things have been up and running for almost a month, and the script has reset the cable modem about half a dozen times, and saved me a lot of annoyance and pain. I need to clean the script up and make it a smarter, along with write up a manifest file to get it running under SMF in Solaris. When that's done I'll put it up, I'm sure it'll be useful to others.