1 2<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 3<html><head><title>Python: module telemetry.core.cros_interface</title> 4<meta charset="utf-8"> 5</head><body bgcolor="#f0f0f8"> 6 7<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading"> 8<tr bgcolor="#7799ee"> 9<td valign=bottom> <br> 10<font color="#ffffff" face="helvetica, arial"> <br><big><big><strong><a href="telemetry.html"><font color="#ffffff">telemetry</font></a>.<a href="telemetry.core.html"><font color="#ffffff">core</font></a>.cros_interface</strong></big></big></font></td 11><td align=right valign=bottom 12><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="../telemetry/core/cros_interface.py">telemetry/core/cros_interface.py</a></font></td></tr></table> 13 <p><tt>A wrapper around ssh for common operations on a CrOS-based device</tt></p> 14<p> 15<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section"> 16<tr bgcolor="#aa55cc"> 17<td colspan=3 valign=bottom> <br> 18<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr> 19 20<tr><td bgcolor="#aa55cc"><tt> </tt></td><td> </td> 21<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="logging.html">logging</a><br> 22<a href="os.html">os</a><br> 23</td><td width="25%" valign=top><a href="re.html">re</a><br> 24<a href="shutil.html">shutil</a><br> 25</td><td width="25%" valign=top><a href="stat.html">stat</a><br> 26<a href="subprocess.html">subprocess</a><br> 27</td><td width="25%" valign=top><a href="tempfile.html">tempfile</a><br> 28</td></tr></table></td></tr></table><p> 29<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section"> 30<tr bgcolor="#ee77aa"> 31<td colspan=3 valign=bottom> <br> 32<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr> 33 34<tr><td bgcolor="#ee77aa"><tt> </tt></td><td> </td> 35<td width="100%"><dl> 36<dt><font face="helvetica, arial"><a href="__builtin__.html#object">__builtin__.object</a> 37</font></dt><dd> 38<dl> 39<dt><font face="helvetica, arial"><a href="telemetry.core.cros_interface.html#CrOSInterface">CrOSInterface</a> 40</font></dt></dl> 41</dd> 42<dt><font face="helvetica, arial"><a href="exceptions.html#Exception">exceptions.Exception</a>(<a href="exceptions.html#BaseException">exceptions.BaseException</a>) 43</font></dt><dd> 44<dl> 45<dt><font face="helvetica, arial"><a href="telemetry.core.cros_interface.html#LoginException">LoginException</a> 46</font></dt><dd> 47<dl> 48<dt><font face="helvetica, arial"><a href="telemetry.core.cros_interface.html#DNSFailureException">DNSFailureException</a> 49</font></dt><dt><font face="helvetica, arial"><a href="telemetry.core.cros_interface.html#KeylessLoginRequiredException">KeylessLoginRequiredException</a> 50</font></dt></dl> 51</dd> 52</dl> 53</dd> 54</dl> 55 <p> 56<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section"> 57<tr bgcolor="#ffc8d8"> 58<td colspan=3 valign=bottom> <br> 59<font color="#000000" face="helvetica, arial"><a name="CrOSInterface">class <strong>CrOSInterface</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr> 60 61<tr><td bgcolor="#ffc8d8"><tt> </tt></td><td> </td> 62<td width="100%">Methods defined here:<br> 63<dl><dt><a name="CrOSInterface-Chown"><strong>Chown</strong></a>(self, filename)</dt></dl> 64 65<dl><dt><a name="CrOSInterface-CloseConnection"><strong>CloseConnection</strong></a>(self)</dt></dl> 66 67<dl><dt><a name="CrOSInterface-CryptohomePath"><strong>CryptohomePath</strong></a>(self, user)</dt><dd><tt>Returns the cryptohome mount point for |user|.</tt></dd></dl> 68 69<dl><dt><a name="CrOSInterface-FileExistsOnDevice"><strong>FileExistsOnDevice</strong></a>(self, file_name)</dt></dl> 70 71<dl><dt><a name="CrOSInterface-FilesystemMountedAt"><strong>FilesystemMountedAt</strong></a>(self, path)</dt><dd><tt>Returns the filesystem mounted at |path|</tt></dd></dl> 72 73<dl><dt><a name="CrOSInterface-FormSSHCommandLine"><strong>FormSSHCommandLine</strong></a>(self, args, extra_ssh_args<font color="#909090">=None</font>)</dt><dd><tt>Constructs a subprocess-suitable command line for `ssh'.</tt></dd></dl> 74 75<dl><dt><a name="CrOSInterface-GetChromePid"><strong>GetChromePid</strong></a>(self)</dt><dd><tt>Returns pid of main chrome browser process.</tt></dd></dl> 76 77<dl><dt><a name="CrOSInterface-GetChromeProcess"><strong>GetChromeProcess</strong></a>(self)</dt><dd><tt>Locates the the main chrome browser process.<br> 78 <br> 79Chrome on cros is usually in /opt/google/chrome, but could be in<br> 80/usr/local/ for developer workflows - debug chrome is too large to fit on<br> 81rootfs.<br> 82 <br> 83Chrome spawns multiple processes for renderers. pids wrap around after they<br> 84are exhausted so looking for the smallest pid is not always correct. We<br> 85locate the session_manager's pid, and look for the chrome process that's an<br> 86immediate child. This is the main browser process.</tt></dd></dl> 87 88<dl><dt><a name="CrOSInterface-GetFile"><strong>GetFile</strong></a>(self, filename, destfile<font color="#909090">=None</font>)</dt><dd><tt>Copies a local file |filename| to |destfile| on the device.<br> 89 <br> 90Args:<br> 91 filename: The name of the local source file.<br> 92 destfile: The name of the file to copy to, and if it is not specified<br> 93 then it is the basename of the source file.</tt></dd></dl> 94 95<dl><dt><a name="CrOSInterface-GetFileContents"><strong>GetFileContents</strong></a>(self, filename)</dt><dd><tt>Get the contents of a file on the device.<br> 96 <br> 97Args:<br> 98 filename: The name of the file on the device.<br> 99 <br> 100Returns:<br> 101 A string containing the contents of the file.</tt></dd></dl> 102 103<dl><dt><a name="CrOSInterface-GetRemotePort"><strong>GetRemotePort</strong></a>(self)</dt></dl> 104 105<dl><dt><a name="CrOSInterface-IsCryptohomeMounted"><strong>IsCryptohomeMounted</strong></a>(self, username, is_guest)</dt><dd><tt>Returns True iff |user|'s cryptohome is mounted.</tt></dd></dl> 106 107<dl><dt><a name="CrOSInterface-IsHTTPServerRunningOnPort"><strong>IsHTTPServerRunningOnPort</strong></a>(self, port)</dt></dl> 108 109<dl><dt><a name="CrOSInterface-IsServiceRunning"><strong>IsServiceRunning</strong></a>(self, service_name)</dt></dl> 110 111<dl><dt><a name="CrOSInterface-KillAllMatching"><strong>KillAllMatching</strong></a>(self, predicate)</dt></dl> 112 113<dl><dt><a name="CrOSInterface-ListProcesses"><strong>ListProcesses</strong></a>(self)</dt><dd><tt>Returns (pid, cmd, ppid, state) of all processes on the device.</tt></dd></dl> 114 115<dl><dt><a name="CrOSInterface-PushContents"><strong>PushContents</strong></a>(self, text, remote_filename)</dt></dl> 116 117<dl><dt><a name="CrOSInterface-PushFile"><strong>PushFile</strong></a>(self, filename, remote_filename)</dt></dl> 118 119<dl><dt><a name="CrOSInterface-RestartUI"><strong>RestartUI</strong></a>(self, clear_enterprise_policy)</dt></dl> 120 121<dl><dt><a name="CrOSInterface-RmRF"><strong>RmRF</strong></a>(self, filename)</dt></dl> 122 123<dl><dt><a name="CrOSInterface-RunCmdOnDevice"><strong>RunCmdOnDevice</strong></a>(self, args, cwd<font color="#909090">=None</font>, quiet<font color="#909090">=False</font>)</dt></dl> 124 125<dl><dt><a name="CrOSInterface-TakeScreenShot"><strong>TakeScreenShot</strong></a>(self, screenshot_prefix)</dt><dd><tt>Takes a screenshot, useful for debugging failures.</tt></dd></dl> 126 127<dl><dt><a name="CrOSInterface-TryLogin"><strong>TryLogin</strong></a>(self)</dt></dl> 128 129<dl><dt><a name="CrOSInterface-__enter__"><strong>__enter__</strong></a>(self)</dt></dl> 130 131<dl><dt><a name="CrOSInterface-__exit__"><strong>__exit__</strong></a>(self, *args)</dt></dl> 132 133<dl><dt><a name="CrOSInterface-__init__"><strong>__init__</strong></a>(self, hostname<font color="#909090">=None</font>, ssh_port<font color="#909090">=None</font>, ssh_identity<font color="#909090">=None</font>)</dt><dd><tt># pylint: disable=R0923</tt></dd></dl> 134 135<hr> 136Data descriptors defined here:<br> 137<dl><dt><strong>__dict__</strong></dt> 138<dd><tt>dictionary for instance variables (if defined)</tt></dd> 139</dl> 140<dl><dt><strong>__weakref__</strong></dt> 141<dd><tt>list of weak references to the object (if defined)</tt></dd> 142</dl> 143<dl><dt><strong>hostname</strong></dt> 144</dl> 145<dl><dt><strong>local</strong></dt> 146</dl> 147<dl><dt><strong>ssh_port</strong></dt> 148</dl> 149</td></tr></table> <p> 150<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section"> 151<tr bgcolor="#ffc8d8"> 152<td colspan=3 valign=bottom> <br> 153<font color="#000000" face="helvetica, arial"><a name="DNSFailureException">class <strong>DNSFailureException</strong></a>(<a href="telemetry.core.cros_interface.html#LoginException">LoginException</a>)</font></td></tr> 154 155<tr><td bgcolor="#ffc8d8"><tt> </tt></td><td> </td> 156<td width="100%"><dl><dt>Method resolution order:</dt> 157<dd><a href="telemetry.core.cros_interface.html#DNSFailureException">DNSFailureException</a></dd> 158<dd><a href="telemetry.core.cros_interface.html#LoginException">LoginException</a></dd> 159<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd> 160<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd> 161<dd><a href="__builtin__.html#object">__builtin__.object</a></dd> 162</dl> 163<hr> 164Data descriptors inherited from <a href="telemetry.core.cros_interface.html#LoginException">LoginException</a>:<br> 165<dl><dt><strong>__weakref__</strong></dt> 166<dd><tt>list of weak references to the object (if defined)</tt></dd> 167</dl> 168<hr> 169Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br> 170<dl><dt><a name="DNSFailureException-__init__"><strong>__init__</strong></a>(...)</dt><dd><tt>x.<a href="#DNSFailureException-__init__">__init__</a>(...) initializes x; see help(type(x)) for signature</tt></dd></dl> 171 172<hr> 173Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br> 174<dl><dt><strong>__new__</strong> = <built-in method __new__ of type object><dd><tt>T.<a href="#DNSFailureException-__new__">__new__</a>(S, ...) -> a new <a href="__builtin__.html#object">object</a> with type S, a subtype of T</tt></dl> 175 176<hr> 177Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br> 178<dl><dt><a name="DNSFailureException-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#DNSFailureException-__delattr__">__delattr__</a>('name') <==> del x.name</tt></dd></dl> 179 180<dl><dt><a name="DNSFailureException-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#DNSFailureException-__getattribute__">__getattribute__</a>('name') <==> x.name</tt></dd></dl> 181 182<dl><dt><a name="DNSFailureException-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#DNSFailureException-__getitem__">__getitem__</a>(y) <==> x[y]</tt></dd></dl> 183 184<dl><dt><a name="DNSFailureException-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#DNSFailureException-__getslice__">__getslice__</a>(i, j) <==> x[i:j]<br> 185 <br> 186Use of negative indices is not supported.</tt></dd></dl> 187 188<dl><dt><a name="DNSFailureException-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl> 189 190<dl><dt><a name="DNSFailureException-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#DNSFailureException-__repr__">__repr__</a>() <==> repr(x)</tt></dd></dl> 191 192<dl><dt><a name="DNSFailureException-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#DNSFailureException-__setattr__">__setattr__</a>('name', value) <==> x.name = value</tt></dd></dl> 193 194<dl><dt><a name="DNSFailureException-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl> 195 196<dl><dt><a name="DNSFailureException-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#DNSFailureException-__str__">__str__</a>() <==> str(x)</tt></dd></dl> 197 198<dl><dt><a name="DNSFailureException-__unicode__"><strong>__unicode__</strong></a>(...)</dt></dl> 199 200<hr> 201Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br> 202<dl><dt><strong>__dict__</strong></dt> 203</dl> 204<dl><dt><strong>args</strong></dt> 205</dl> 206<dl><dt><strong>message</strong></dt> 207</dl> 208</td></tr></table> <p> 209<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section"> 210<tr bgcolor="#ffc8d8"> 211<td colspan=3 valign=bottom> <br> 212<font color="#000000" face="helvetica, arial"><a name="KeylessLoginRequiredException">class <strong>KeylessLoginRequiredException</strong></a>(<a href="telemetry.core.cros_interface.html#LoginException">LoginException</a>)</font></td></tr> 213 214<tr><td bgcolor="#ffc8d8"><tt> </tt></td><td> </td> 215<td width="100%"><dl><dt>Method resolution order:</dt> 216<dd><a href="telemetry.core.cros_interface.html#KeylessLoginRequiredException">KeylessLoginRequiredException</a></dd> 217<dd><a href="telemetry.core.cros_interface.html#LoginException">LoginException</a></dd> 218<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd> 219<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd> 220<dd><a href="__builtin__.html#object">__builtin__.object</a></dd> 221</dl> 222<hr> 223Data descriptors inherited from <a href="telemetry.core.cros_interface.html#LoginException">LoginException</a>:<br> 224<dl><dt><strong>__weakref__</strong></dt> 225<dd><tt>list of weak references to the object (if defined)</tt></dd> 226</dl> 227<hr> 228Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br> 229<dl><dt><a name="KeylessLoginRequiredException-__init__"><strong>__init__</strong></a>(...)</dt><dd><tt>x.<a href="#KeylessLoginRequiredException-__init__">__init__</a>(...) initializes x; see help(type(x)) for signature</tt></dd></dl> 230 231<hr> 232Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br> 233<dl><dt><strong>__new__</strong> = <built-in method __new__ of type object><dd><tt>T.<a href="#KeylessLoginRequiredException-__new__">__new__</a>(S, ...) -> a new <a href="__builtin__.html#object">object</a> with type S, a subtype of T</tt></dl> 234 235<hr> 236Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br> 237<dl><dt><a name="KeylessLoginRequiredException-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#KeylessLoginRequiredException-__delattr__">__delattr__</a>('name') <==> del x.name</tt></dd></dl> 238 239<dl><dt><a name="KeylessLoginRequiredException-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#KeylessLoginRequiredException-__getattribute__">__getattribute__</a>('name') <==> x.name</tt></dd></dl> 240 241<dl><dt><a name="KeylessLoginRequiredException-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#KeylessLoginRequiredException-__getitem__">__getitem__</a>(y) <==> x[y]</tt></dd></dl> 242 243<dl><dt><a name="KeylessLoginRequiredException-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#KeylessLoginRequiredException-__getslice__">__getslice__</a>(i, j) <==> x[i:j]<br> 244 <br> 245Use of negative indices is not supported.</tt></dd></dl> 246 247<dl><dt><a name="KeylessLoginRequiredException-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl> 248 249<dl><dt><a name="KeylessLoginRequiredException-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#KeylessLoginRequiredException-__repr__">__repr__</a>() <==> repr(x)</tt></dd></dl> 250 251<dl><dt><a name="KeylessLoginRequiredException-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#KeylessLoginRequiredException-__setattr__">__setattr__</a>('name', value) <==> x.name = value</tt></dd></dl> 252 253<dl><dt><a name="KeylessLoginRequiredException-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl> 254 255<dl><dt><a name="KeylessLoginRequiredException-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#KeylessLoginRequiredException-__str__">__str__</a>() <==> str(x)</tt></dd></dl> 256 257<dl><dt><a name="KeylessLoginRequiredException-__unicode__"><strong>__unicode__</strong></a>(...)</dt></dl> 258 259<hr> 260Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br> 261<dl><dt><strong>__dict__</strong></dt> 262</dl> 263<dl><dt><strong>args</strong></dt> 264</dl> 265<dl><dt><strong>message</strong></dt> 266</dl> 267</td></tr></table> <p> 268<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section"> 269<tr bgcolor="#ffc8d8"> 270<td colspan=3 valign=bottom> <br> 271<font color="#000000" face="helvetica, arial"><a name="LoginException">class <strong>LoginException</strong></a>(<a href="exceptions.html#Exception">exceptions.Exception</a>)</font></td></tr> 272 273<tr><td bgcolor="#ffc8d8"><tt> </tt></td><td> </td> 274<td width="100%"><dl><dt>Method resolution order:</dt> 275<dd><a href="telemetry.core.cros_interface.html#LoginException">LoginException</a></dd> 276<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd> 277<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd> 278<dd><a href="__builtin__.html#object">__builtin__.object</a></dd> 279</dl> 280<hr> 281Data descriptors defined here:<br> 282<dl><dt><strong>__weakref__</strong></dt> 283<dd><tt>list of weak references to the object (if defined)</tt></dd> 284</dl> 285<hr> 286Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br> 287<dl><dt><a name="LoginException-__init__"><strong>__init__</strong></a>(...)</dt><dd><tt>x.<a href="#LoginException-__init__">__init__</a>(...) initializes x; see help(type(x)) for signature</tt></dd></dl> 288 289<hr> 290Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br> 291<dl><dt><strong>__new__</strong> = <built-in method __new__ of type object><dd><tt>T.<a href="#LoginException-__new__">__new__</a>(S, ...) -> a new <a href="__builtin__.html#object">object</a> with type S, a subtype of T</tt></dl> 292 293<hr> 294Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br> 295<dl><dt><a name="LoginException-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#LoginException-__delattr__">__delattr__</a>('name') <==> del x.name</tt></dd></dl> 296 297<dl><dt><a name="LoginException-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#LoginException-__getattribute__">__getattribute__</a>('name') <==> x.name</tt></dd></dl> 298 299<dl><dt><a name="LoginException-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#LoginException-__getitem__">__getitem__</a>(y) <==> x[y]</tt></dd></dl> 300 301<dl><dt><a name="LoginException-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#LoginException-__getslice__">__getslice__</a>(i, j) <==> x[i:j]<br> 302 <br> 303Use of negative indices is not supported.</tt></dd></dl> 304 305<dl><dt><a name="LoginException-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl> 306 307<dl><dt><a name="LoginException-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#LoginException-__repr__">__repr__</a>() <==> repr(x)</tt></dd></dl> 308 309<dl><dt><a name="LoginException-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#LoginException-__setattr__">__setattr__</a>('name', value) <==> x.name = value</tt></dd></dl> 310 311<dl><dt><a name="LoginException-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl> 312 313<dl><dt><a name="LoginException-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#LoginException-__str__">__str__</a>() <==> str(x)</tt></dd></dl> 314 315<dl><dt><a name="LoginException-__unicode__"><strong>__unicode__</strong></a>(...)</dt></dl> 316 317<hr> 318Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br> 319<dl><dt><strong>__dict__</strong></dt> 320</dl> 321<dl><dt><strong>args</strong></dt> 322</dl> 323<dl><dt><strong>message</strong></dt> 324</dl> 325</td></tr></table></td></tr></table><p> 326<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section"> 327<tr bgcolor="#eeaa77"> 328<td colspan=3 valign=bottom> <br> 329<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr> 330 331<tr><td bgcolor="#eeaa77"><tt> </tt></td><td> </td> 332<td width="100%"><dl><dt><a name="-GetAllCmdOutput"><strong>GetAllCmdOutput</strong></a>(args, cwd<font color="#909090">=None</font>, quiet<font color="#909090">=False</font>)</dt><dd><tt>Open a subprocess to execute a program and returns its output.<br> 333 <br> 334Args:<br> 335 args: A string or a sequence of program arguments. The program to execute is<br> 336 the string or the first item in the args sequence.<br> 337 cwd: If not None, the subprocess's current directory will be changed to<br> 338 |cwd| before it's executed.<br> 339 <br> 340Returns:<br> 341 Captures and returns the command's stdout.<br> 342 Prints the command's stderr to logger (which defaults to stdout).</tt></dd></dl> 343 <dl><dt><a name="-HasSSH"><strong>HasSSH</strong></a>()</dt></dl> 344 <dl><dt><a name="-RunCmd"><strong>RunCmd</strong></a>(args, cwd<font color="#909090">=None</font>, quiet<font color="#909090">=False</font>)</dt><dd><tt>Opens a subprocess to execute a program and returns its return value.<br> 345 <br> 346Args:<br> 347 args: A string or a sequence of program arguments. The program to execute is<br> 348 the string or the first item in the args sequence.<br> 349 cwd: If not None, the subprocess's current directory will be changed to<br> 350 |cwd| before it's executed.<br> 351 <br> 352Returns:<br> 353 Return code from the command execution.</tt></dd></dl> 354</td></tr></table> 355</body></html>