diff --git a/utils/command_executer.py b/utils/command_executer.py
index 0aedc47..a4dca64 100644
--- a/utils/command_executer.py
+++ b/utils/command_executer.py
@@ -5,7 +5,6 @@
 
 import getpass
 import os
-import pty
 import re
 import select
 import subprocess
@@ -62,10 +61,9 @@
         user = username + "@"
       cmd = "ssh -t -t %s%s -- '%s'" % (user, machine, cmd)
 
-    pty_fds = pty.openpty()
     p = subprocess.Popen(cmd, stdout=subprocess.PIPE,
                          stderr=subprocess.PIPE,
-                         stdin=pty_fds[0], shell=True)
+                         shell=True)
 
     full_stdout = ""
     full_stderr = ""
@@ -135,8 +133,6 @@
         break
 
     p.wait()
-    os.close(pty_fds[0])
-    os.close(pty_fds[1])
     if return_output:
       return (p.returncode, full_stdout, full_stderr)
     return p.returncode
diff --git a/utils/no_pseudo_terminal_test.py b/utils/no_pseudo_terminal_test.py
new file mode 100644
index 0000000..c4c3c43
--- /dev/null
+++ b/utils/no_pseudo_terminal_test.py
@@ -0,0 +1,49 @@
+"""Test to ensure we're not touching /dev/ptmx when running commands."""
+
+import os
+import subprocess
+import tempfile
+import time
+import unittest
+from utils import command_executer
+
+
+class NoPsuedoTerminalTest(unittest.TestCase):
+
+  STRACE_TIMEOUT = 10
+
+  def _AttachStraceToSelf(self, output_file):
+    """Attaches strace to the current process."""
+    args = ["strace", "-o", output_file, "-p", str(os.getpid())]
+    print args
+    self._strace_process = subprocess.Popen(args)
+    # Wait until we see some activity.
+    start_time = time.time()
+    while time.time() - start_time < self.STRACE_TIMEOUT:
+      if os.path.isfile(output_file) and open(output_file).read(1):
+        return True
+      time.sleep(1)
+    return False
+
+  def _KillStraceProcess(self):
+    """Kills strace that was started by _AttachStraceToSelf()."""
+    self._strace_process.terminate()
+    self._strace_process.wait()
+    return True
+
+  def testNoPseudoTerminalWhenRunningCommand(self):
+    """Test to make sure we're not touching /dev/ptmx when running commands."""
+    temp_file = tempfile.mktemp()
+    self.assertTrue(self._AttachStraceToSelf(temp_file))
+
+    ce = command_executer.GetCommandExecuter()
+    ce.RunCommand("echo")
+
+    self.assertTrue(self._KillStraceProcess())
+
+    strace_contents = open(temp_file).read()
+    self.assertFalse("/dev/ptmx" in strace_contents)
+
+
+if __name__ == '__main__':
+  unittest.main()
