Updated to support older APC PDUs such as Neils APC (management software v3.0.3)
diff --git a/lavapdu/apcdrivers.py b/lavapdu/apcdrivers.py
index c840ba6..72d0d54 100644
--- a/lavapdu/apcdrivers.py
+++ b/lavapdu/apcdrivers.py
@@ -44,12 +44,18 @@
         #self.connection.expect("4- Logout")
         #self.connection.expect("> ")
 
-    def _enter_outlet(self, outlet):
-        self.connection.expect("Press <ENTER> to continue...")
+    def _enter_outlet(self, outlet, enter_needed=True):
+        outlet = "%s" % outlet
+        logging.debug("Attempting to enter outlet %s", outlet)
+        if (enter_needed):
+            self.connection.expect("Press <ENTER> to continue...")
+        logging.debug("Sending enter")
         self.connection.send("\r")
         self.connection.expect("> ")
+        logging.debug("Sending outlet number")
         self.connection.send(outlet)
         self.connection.send("\r")
+        logging.debug("Finished entering outlet")
 
     def _port_interaction(self, command, port_number):
         print("Attempting command: %s port: %i" % (command, port_number))
@@ -58,8 +64,10 @@
         self.connection.send("\r")
         self.connection.expect("1- Device Manager")
         self.connection.expect("> ")
+        logging.debug("Entering Device Manager")
         self.connection.send("1\r")
-        res = self.connection.expect(["3- Outlet Control/Configuration","2- Outlet Control","2- Outlet Management"])
+        res = self.connection.expect(["3- Outlet Control/Configuration","2- Outlet Control","2- Outlet Management","------- Device Manager"])
+        logging.debug("Matched pattern %s", res)
         if res == 0:
             self.connection.send("3\r")
             self._enter_outlet(port_number)
@@ -68,6 +76,9 @@
             self._enter_outlet(port_number)
         elif res == 2:
             self.connection.send("2\r")
+        elif res == 3:
+            logging.debug("Matched ------- Device Manager")
+            self._enter_outlet(port_number, False)
         res = self.connection.expect(["1- Control Outlet", "1- Outlet Control/Configuration"])
         self.connection.expect("> ")
         self.connection.send("1\r")
@@ -75,9 +86,13 @@
         if res == 1:
             logging.debug("Stupid paging thingmy detected, pressing enter")
             self.connection.send("\r")
-        logging.debug("We should now be at the outlet list")
-        self.connection.send("%s\r" % port_number)
-        self.connection.send("1\r")
+        self.connection.send("\r")
+        res = self.connection.expect(["Control Outlet %s" % port_number,"Control Outlet"])
+        if res == 0:
+            logging.debug("Already at the right port")
+        else:
+            self.connection.send("%s\r" % port_number)
+            self.connection.send("1\r")
         self.connection.expect("3- Immediate Reboot")
         self.connection.expect("> ")
         if command == "reboot":
@@ -149,4 +164,4 @@
         self._port_interaction("off", port_number)
 
     def port_reboot(self, port_number):
-        self._port_interaction("reboot", port_number)
\ No newline at end of file
+        self._port_interaction("reboot", port_number)
diff --git a/lavapdu/engine.py b/lavapdu/engine.py
index 6cb08a4..e8ab9ca 100644
--- a/lavapdu/engine.py
+++ b/lavapdu/engine.py
@@ -21,6 +21,7 @@
 import pexpect
 import os
 import logging
+import sys
 
 from apcdrivers import apc8959
 from apcdrivers import apc7952
@@ -57,6 +58,7 @@
 
     def get_connection(self, exec_string):
         connection = pexpect.spawn(exec_string)
+        connection.logfile = sys.stdout
         return connection
 
     def is_busy(self):
@@ -80,22 +82,31 @@
 
 
 if __name__ == "__main__":
-    pe1 = PDUEngine("pdu15")
-    pe1.driver.port_off(22)
-    pe1.driver.port_on(22)
-    pe1.close()
-    pe2 = PDUEngine("pdu14")
-    pe2.driver.port_off(6)
-    pe2.driver.port_on(6)
-    pe2.close()
-    pe3 = PDUEngine("pdu01")
-    pe3.driver.port_reboot(1)
-    pe3.driver.port_off(1)
-    pe3.driver.port_on(1)
-    pe3.close()
-    pe4 = PDUEngine("pdu02")
+    #pe1 = PDUEngine("pdu15")
+    #pe1.driver.port_off(22)
+    #pe1.driver.port_on(22)
+    #pe1.close()
+    #pe2 = PDUEngine("pdu14")
+    #pe2.driver.port_off(6)
+    #pe2.driver.port_on(6)
+    #pe2.close()
+    #pe3 = PDUEngine("pdu01")
+    #pe3.driver.port_reboot(1)
+    #pe3.driver.port_off(1)
+    #pe3.driver.port_on(1)
+    #pe3.close()
+    logging.basicConfig(level=logging.DEBUG)
+    logging.getLogger().setLevel(logging.DEBUG)
+    pe4 = PDUEngine("192.168.1.153")
+    pe4.driver.port_reboot(1)
+    pe4.driver.port_reboot(2)
+    pe4.driver.port_reboot(3)
+    pe4.driver.port_reboot(4)
+    pe4.driver.port_reboot(5)
+    pe4.driver.port_reboot(6)
+    pe4.driver.port_reboot(7)
     pe4.driver.port_reboot(8)
-    pe4.driver.port_off(8)
-    pe4.driver.port_on(8)
+    #pe4.driver.port_off(8)
+    #pe4.driver.port_on(8)
     pe4.close()