匹配进程的提示并以编程方式响应

时间:2013-08-04 18:59:49

标签: python subprocess

我正在编写一个脚本来自动更新本地的所有SSH自动登录密钥。如果我的一台计算机还没有初始SSH文件,那么就运行以下脚本(我也考虑在经过一些测试后在GitHub上共享它);

ssh-keygen -t rsa

..所以我得到了提示;

  • 输入要保存密钥的文件(/Users/allendar/.ssh/id_rsa):
  • 输入密码(无密码短语为空):
  • 再次输入相同的密码:

ssh-copy-id命令中动态添加所有密钥也是如此。

我现在主要只使用os库,但我在线阅读时应该使用subprocess Popen之类的内容。

有没有办法可以捕获我从该子流程获得的每个提示,并且可能将他们的问题与正则表达式或文字字符串匹配相匹配,并且基于此我可以向流程发送响应。

因此,如果我打开一个子进程ssh-keygen -t rsa并询问Enter same passphrase again:,我可能会抓住(读取)它要求的内容并发回回复ComplexPassword

1 个答案:

答案 0 :(得分:1)

改为使用pexpect

import pexpect

kg = pexpect.spawn('ssh-keygen -t rsa')
kg.expect('Enter same passphrase again:')