Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 """A wrapper around ssh for common operations on a CrOS-based device""" | 4 """A wrapper around ssh for common operations on a CrOS-based device""" |
| 5 import logging | 5 import logging |
| 6 import os | 6 import os |
| 7 import re | 7 import re |
| 8 import shutil | 8 import shutil |
| 9 import stat | 9 import stat |
| 10 import subprocess | 10 import subprocess |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 135 return not self._hostname | 135 return not self._hostname |
| 136 | 136 |
| 137 @property | 137 @property |
| 138 def hostname(self): | 138 def hostname(self): |
| 139 return self._hostname | 139 return self._hostname |
| 140 | 140 |
| 141 @property | 141 @property |
| 142 def ssh_port(self): | 142 def ssh_port(self): |
| 143 return self._ssh_port | 143 return self._ssh_port |
| 144 | 144 |
| 145 def FormSSHCommandLine(self, args, extra_ssh_args=None): | 145 def FormSSHCommandLine(self, args, extra_ssh_args=None, port_forward=False): |
| 146 """Constructs a subprocess-suitable command line for `ssh'. | 146 """Constructs a subprocess-suitable command line for `ssh'. |
| 147 """ | 147 """ |
| 148 if self.local: | 148 if self.local: |
| 149 # We run the command through the shell locally for consistency with | 149 # We run the command through the shell locally for consistency with |
| 150 # how commands are run through SSH (crbug.com/239161). This work | 150 # how commands are run through SSH (crbug.com/239161). This work |
| 151 # around will be unnecessary once we implement a persistent SSH | 151 # around will be unnecessary once we implement a persistent SSH |
| 152 # connection to run remote commands (crbug.com/239607). | 152 # connection to run remote commands (crbug.com/239607). |
| 153 return ['sh', '-c', " ".join(args)] | 153 return ['sh', '-c', " ".join(args)] |
| 154 | 154 |
| 155 full_args = ['ssh', '-o ForwardX11=no', '-o ForwardX11Trusted=no', '-n', | 155 full_args = ['ssh', '-o ForwardX11=no', '-o ForwardX11Trusted=no', '-n'] |
| 156 '-S', self._ssh_control_file] + self._ssh_args | 156 # As remote port forwarding might conflicts with the control socket |
|
malmnas
2017/07/13 19:30:00
nit: s/conflicts/conflict
cywang
2017/07/14 02:42:07
Done.
| |
| 157 # sharing, skip the control socket args if it is for remote pot forwarding. | |
|
malmnas
2017/07/13 19:30:00
s/pot/port
cywang
2017/07/14 02:42:07
Done.
| |
| 158 if not port_forward: | |
| 159 full_args += ['-S', self._ssh_control_file] | |
| 160 full_args += self._ssh_args | |
| 157 if self._ssh_identity is not None: | 161 if self._ssh_identity is not None: |
| 158 full_args.extend(['-i', self._ssh_identity]) | 162 full_args.extend(['-i', self._ssh_identity]) |
| 159 if extra_ssh_args: | 163 if extra_ssh_args: |
| 160 full_args.extend(extra_ssh_args) | 164 full_args.extend(extra_ssh_args) |
| 161 full_args.append('root@%s' % self._hostname) | 165 full_args.append('root@%s' % self._hostname) |
| 162 full_args.append('-p%d' % self._ssh_port) | 166 full_args.append('-p%d' % self._ssh_port) |
| 163 full_args.extend(args) | 167 full_args.extend(args) |
| 164 return full_args | 168 return full_args |
| 165 | 169 |
| 166 def _FormSCPCommandLine(self, src, dst, extra_scp_args=None): | 170 def _FormSCPCommandLine(self, src, dst, extra_scp_args=None): |
| (...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 561 else: | 565 else: |
| 562 self.RunCmdOnDevice(start_cmd) | 566 self.RunCmdOnDevice(start_cmd) |
| 563 | 567 |
| 564 def CloseConnection(self): | 568 def CloseConnection(self): |
| 565 if not self.local: | 569 if not self.local: |
| 566 with open(os.devnull, 'w') as devnull: | 570 with open(os.devnull, 'w') as devnull: |
| 567 subprocess.call( | 571 subprocess.call( |
| 568 self.FormSSHCommandLine(['-O', 'exit', self._hostname]), | 572 self.FormSSHCommandLine(['-O', 'exit', self._hostname]), |
| 569 stdout=devnull, | 573 stdout=devnull, |
| 570 stderr=devnull) | 574 stderr=devnull) |
| OLD | NEW |