使用 icommandlib 或 pexpect 交互式运行命令
但是,如果你要运行的命令需要
- 它提示用户进行响应(是或否 / 密码 / 等等)。
- 它在终端窗口上“绘制” - 就像“top”。
- 你想在它运行时与进程交互并做其他事情(例如,等待数据库服务预热,然后继续)。
那么你需要一个交互式库。
Commandlib 可以用这种方式为另外两个库调用并创建交互式进程对象 - ICommandLib 和 pexpect。
下面的两个示例实际上不是交互式的,但它们演示了如何使用 pexpect 和 icommandlib。
outputtext
#!/bin/bash
echo hello $1
from commandlib import Command
icommandlib
process = Command("./outputtext", "mark").interactive().run()
process.wait_until_output_contains("mark")
process.wait_for_successful_exit()
pexpect
from pexpect import EOF
process = Command("./outputtext", "mark").pexpect()
process.expect("mark")
process.expect(EOF)
process.close()