| Index: server/hosts/logfile_monitor.py
 | 
| diff --git a/server/hosts/logfile_monitor.py b/server/hosts/logfile_monitor.py
 | 
| index 1608a6be0b62c3c1dad9a5ce87761b5a14288d52..9595cc82adaad7c80eac825b4ec722d8108a1eea 100644
 | 
| --- a/server/hosts/logfile_monitor.py
 | 
| +++ b/server/hosts/logfile_monitor.py
 | 
| @@ -26,15 +26,6 @@ class FollowFilesLaunchError(Error):
 | 
|      """Error occurred launching followfiles remotely."""
 | 
|  
 | 
|  
 | 
| -def run_cmd_on_host(hostname, cmd, stdin, stdout, stderr):
 | 
| -    base_cmd = abstract_ssh.make_ssh_command()
 | 
| -    full_cmd = "%s %s \"%s\"" % (base_cmd, hostname,
 | 
| -                                 server_utils.sh_escape(cmd))
 | 
| -
 | 
| -    return subprocess.Popen(full_cmd, stdin=stdin, stdout=stdout,
 | 
| -                            stderr=stderr, shell=True)
 | 
| -
 | 
| -
 | 
|  def list_remote_pythons(host):
 | 
|      """List out installed pythons on host."""
 | 
|      result = host.run('ls /usr/bin/python[0-9]*')
 | 
| @@ -72,25 +63,24 @@ def launch_remote_followfiles(host, lastlines_dirpath, follow_paths):
 | 
|              raise FollowFilesLaunchError('No supported Python on host.')
 | 
|  
 | 
|      remote_monitordir = copy_monitordir(host)
 | 
| -    remote_script_path = os.path.join(
 | 
| -        remote_monitordir, 'followfiles.py')
 | 
| +    remote_script_path = os.path.join(remote_monitordir, 'followfiles.py')
 | 
|  
 | 
|      followfiles_cmd = '%s %s --lastlines_dirpath=%s %s' % (
 | 
|          supported_python, remote_script_path,
 | 
|          lastlines_dirpath, ' '.join(follow_paths))
 | 
|  
 | 
| -    devnull_r = open(os.devnull, 'r')
 | 
| -    devnull_w = open(os.devnull, 'w')
 | 
| -    remote_followfiles_proc = run_cmd_on_host(
 | 
| -        host.hostname, followfiles_cmd, stdout=subprocess.PIPE,
 | 
| -        stdin=devnull_r, stderr=devnull_w)
 | 
| +    remote_ff_proc = subprocess.Popen(host._make_ssh_cmd(followfiles_cmd),
 | 
| +                                      stdin=open(os.devnull, 'r'),
 | 
| +                                      stdout=subprocess.PIPE, shell=True)
 | 
| +
 | 
| +
 | 
|      # Give it enough time to crash if it's going to (it shouldn't).
 | 
|      time.sleep(5)
 | 
| -    doa = remote_followfiles_proc.poll()
 | 
| +    doa = remote_ff_proc.poll()
 | 
|      if doa:
 | 
|          raise FollowFilesLaunchError('ssh command crashed.')
 | 
|  
 | 
| -    return remote_followfiles_proc
 | 
| +    return remote_ff_proc
 | 
|  
 | 
|  
 | 
|  def resolve_patterns_path(patterns_path):
 | 
| 
 |