Hi,
I asked student to make command line interface to the http://www.black-box.at/en-at/fi/1574/12791/Power-Switch-Cabinet-NG/O2.
Device has ajax over http with digest auth interface.
I works just fine, but ...
Random testing on IP addresses is really horrible idea. Half of our platform was down this morning.
#! /usr/bin/python import sys, os, re import getopt import shlex, subprocess command = "curl -u \"admin:admin\" --noproxy 192.168.100.1 --digest http://192.168.100.1/user/control.cgi --data-binary CMD=" def output_print(command): args = shlex.split(command) output, error = subprocess.Popen(args,stdout = subprocess.PIPE, stderr= subprocess.PIPE).communicate() match = re.findall( r'var data=(.*)\;', output, re.MULTILINE) status = None if match: try: true = 1 false = 0 # eval context status = eval(str(match[0])) except TypeError: print ("Status eval error") return 1 [Name, p2, port_state] = status[1] print Name print "|--------------------------------------------" print "| Port | State " print "|--------------------------------------------" for i in range(4): [Name, P0, State,P1,P2,P3] = port_state[i] print ">",Name, " |", State return def main(argv): global command if len(argv) == 0: output_print(command) elif len(argv) == 2: ports = ['1','2','3','4'] switch = {'ON':0,'OFF':1} if not argv[0] in ports: print argv[0] + " is not port number" return -1 if not argv[1].upper() in switch.keys(): print argv[1] + " switch nok" return -1 command = command + "0_%d_%s" % (int(argv[0]) -1, str(switch.get(argv[1].upper()))) output_print(command) else: print "not correct number of arguments, should be two - Port number and new state on/off" if __name__ == '__main__': main(sys.argv[1:])