def _run_command(self, command):
base64_encoded_command = base64.encodestring('{0}\r\n'.format(command))
yield self._sender.send_request(
'send',
shell_id=self._shell_id,
command_id=self._command_id,
base64_encoded_command=base64_encoded_command)
stdout = []
stderr = []
for i in xrange(_MAX_REQUESTS_PER_COMMAND):
out, err = yield task.deferLater(
reactor, self._READ_DELAY, self._get_output)
stderr.extend(err)
if not out:
continue
stdout.extend(out[:-1])
if out[-1] == self._prompt:
break
stdout.append(out[-1])
else:
raise Exception("Reached max requests per command.")
defer.returnValue((stdout, stderr))
评论列表
文章目录