当我执行以下命令时,它通常会要求输入用户。我们如何在python脚本中自动化用户交互。
os.system(" openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095")
答案 0 :(得分:1)
使用subprocess.Popen
启动命令,然后communicate
模拟用户互动。
import subprocess
process = subprocess.Popen(['openssl', 'req', '-new', ...],
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
stdout, stderr = process.communicate(input='input1\ninput2')
答案 1 :(得分:0)
对于该特定命令,您不需要任何自动化工具来向脚本提供输入。将文件管道化到它应该允许它在没有用户交互的情况下执行(如Coldspeed在他的评论中所说)。
大多数命令行界面允许参数化执行,大多数参数可以构建到脚本中,也可以从某个配置文件中读取。
对于那些需要“真实”用户交互的命令行工具(即你无法管道输入,参数化或以某种方式将其构建到命令本身),我使用了pexpect模块并取得了巨大的成功。