2017-06-21 87 views
0

当我执行下面的命令时,它通常会询问用户输入。我们如何自动化Python脚本中的用户交互。我们如何自动化Python脚本中的用户交互

使用os.system( “OpenSSL的REQ -new -x509 -key privkey.pem -out cacert.pem -days 1095”)

+0

'openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095

回答

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') 
0

对于该特定命令,您不应该需要任何自动化工具来将输入提供给脚本。管理一个文件应该允许它在没有用户交互的情况下执行(就像Coldspeed在他的评论中说的)。

大多数命令行界面允许参数化执行以及大部分参数,您可以将其构建到脚本中或从某个配置文件中读取它们。

对于那些需要“真正”用户交互的命令行工具(即不能管道输入,参数化或以某种方式将其构建到命令本身中),我使用pexpect模块取得了巨大成功。