class Command(threading.Thread):
def __init__(self, command, cwd=None, writeConsole=True, timeout=60):
threading.Thread.__init__(self)
self.command = command
self.cwd = cwd
self.writeConsole = writeConsole
self.timeout = timeout
def run(self):
if self.cwd is not None:
print '[' + ' '.join(self.command) + '] in ' + self.cwd
else:
print '[' + ' '.join(self.command) + ']'
self.p = subprocess.Popen(self.command, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, cwd=self.cwd)
self.stdout_lines = []
for stdout_line in iter(self.p.stdout.readline, b''):
if self.writeConsole:
sys.stdout.write(stdout_line)
self.stdout_lines.append(stdout_line)
self.stderr_lines = []
for stderr_line in iter(self.p.stderr.readline, b''):
if self.writeConsole:
sys.stderr.write(stderr_line)
self.stderr_lines.append(stderr_line)
self.result = self.p.poll()
def exec_command(self):
self.start()
self.join(self.timeout)
if self.is_alive():
print 'executing [' + ' '.join(self.command) + '] timeout with timeout in seconds =>', self.timeout
self.p.terminate() #use self.p.kill() if process needs a kill -9
self.join()
sys.exit(1)
return (self.result, self.stdout_lines, self.stderr_lines)
if __name__ == "__main__":
result, outs, errs = Command(
["/bin/sleep", "3"], writeConsole=True, timeout=2).exec_command()
Command(
["/bin/echo", "3"], writeConsole=True, timeout=2).exec_command()
分享到:
相关推荐
- `timeout`: The timeout duration in seconds to wait for the WebDriver server to start (default: 30). - `host`: The host address of the WebDriver server (default: None). - `log_level`: The logging ...
It’s time to talk about a new class in the lldb Python module, SBValue, and how it can simplify the parsing of JIT code output. 22. SB Examples, Improved Lookup For the rest of the chapters in this...
Open Connection host=10.69.140.112 port=2222 timeout=10 seconds prompt=$ ``` - **Get Connection**:获取已建立的连接信息,可以指定索引或别名,如果不指定,则返回当前连接的信息。 ```robotframework ${con...
def execute_command(cmdstring, cwd=None, timeout=None, shell=False): """ 执行一个Shell命令。 封装了subprocess的Popen方法, 支持超时判断,支持读取stdout和stderr。 参数: cwd: 运行命令时更改路径...
There are some challenges to write the code as ESXi has a subset of Python 2.7 which constrains some modules that can be used. 2. Prerequisites The code requires Python 2.7 to work. Most Linux ...
- `connect()`:这是建立与远程服务器连接的主要方法,必须提供hostname参数,其他可选参数包括port(默认为SSH标准端口22)、username、password、pkey或key_filename用于身份验证,以及timeout、allow_agent和look...
用法wait-for-it.sh host:port [-s] [-t timeout] [-- command args]-h HOST | --host=HOST Host or IP under test-p PORT | --port=PORT TCP port under test Alternatively, you specify the host and port as ...
There are some challenges to write the code as ESXi has a subset of Python 2.7 which constrains some modules that can be used. 2. Prerequisites ---------------- The code requires Python 2.7 to work....
'timeout': 5000 }) return result['stdout'] ``` 四、使用 Appium 截取元素图片 Appium 提供了一个截取元素图片的方法,可以使用以下代码实现: ``` element = self.driver.find_element_by_id('...