我们如何在python脚本

时间:2017-06-21 04:52:19

标签: python user-interface automation

当我执行以下命令时,它通常会要求输入用户。我们如何在python脚本中自动化用户交互。

os.system(" openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095")

2 个答案:

答案 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模块并取得了巨大的成功。