+ (f_in, f_out, f_err) = os.popen3(cmd)
+ lout, lin, lerr = select([f_out,f_err], [], [], COMMAND_TIMEOUT*2)
+ if len(lin) == 0 and len(lout) == 0 and len(lerr) == 0:
+ # Reached a timeout!
+ print "TODO: kill subprocess: '%s'" % cmd
+ # TODO: kill subprocess??
+ return ("", "SCRIPTTIMEOUT")
+ o_value = f_out.read()
+ e_value = ""
+ if o_value == "": # An error has occured
+ e_value = f_err.read()
+
+ o_value = o_value.strip()
+ e_value = e_value.strip()
+
+ f_out.close()
+ f_in.close()
+ f_err.close()
+ return (o_value, e_value)
+
+ def run(self, cmd):
+
+ (f_in, f_out, f_err) = os.popen3(cmd)
+ value = f_out.read()
+ if value == "":
+ raise Exception, f_err.read()
+ value = value.strip()
+
+ f_out.close()
+ f_in.close()
+ f_err.close()
+ return value
+
+
+
+class SSH(CMD):