我正在编写一个脚本来自动更新本地的所有SSH自动登录密钥。如果我的一台计算机还没有初始SSH文件,那么就运行以下脚本(我也考虑在经过一些测试后在GitHub上共享它);
ssh-keygen -t rsa
..所以我得到了提示;
在ssh-copy-id
命令中动态添加所有密钥也是如此。
我现在主要只使用os
库,但我在线阅读时应该使用subprocess
Popen
之类的内容。
有没有办法可以捕获我从该子流程获得的每个提示,并且可能将他们的问题与正则表达式或文字字符串匹配相匹配,并且基于此我可以向流程发送响应。
因此,如果我打开一个子进程ssh-keygen -t rsa
并询问Enter same passphrase again:
,我可能会抓住(读取)它要求的内容并发回回复ComplexPassword
。
答案 0 :(得分:1)
改为使用pexpect
。
import pexpect
kg = pexpect.spawn('ssh-keygen -t rsa')
kg.expect('Enter same passphrase again:')