【发布时间】:2012-05-28 19:17:25
【问题描述】:
我已经有这个问题好几天了,我不知道出了什么问题。
我有一个使用 pexpect 在 OSX 上运行的简单 python 脚本,它启动 ssh-keygen 并自动点击返回以生成密钥对,它工作正常。我想在 Windows 上做同样的事情。为了在 Windows 上获取 ssh 和 ssh-keygen,我安装了 OpenSSH for Windows,它允许 ssh 从 cmd 提示符运行,作为使用部分 CYGWIN 支持文件的普通 Windows 程序。我将相同的脚本移植到 Windows 并将 pexpect 更改为 winpexpect 并使用对应的 winspawn 启动子进程,但它在第一个提示符处停止。
def generateKeys(self):
print "GeneratingKeys..."
gen = winpexpect.winspawn("ssh-keygen -t rsa")
print gen.expect(":") #This is where it asks for a place to save the keys. retuns 0 if found
print "before: " + gen.before
print "after: " + gen.after
print gen.sendline()
#Next it should expect a prompt for a passphrase but it never reaches it
print gen.expect(":")
print "before: " + gen.before
print "after: " + gen.after
print gen.sendline()
我得到的输出是这样的:
GeneratingKeys...
0
before: Enter file in which to save the key (/home/user/.ssh/id_rsa)
after: :
2
before: Enter file in which to save the key (/home/user/.ssh/id_rsa)
after: :
它就在这里,它为所有收集数字灰尘的兔子提供了永恒的空间。
我也不明白为什么在预期的冒号之后会出现“:”。
我是否可以使用另一个模块来更好地与 OpenSSH for Windows 进行通信?
【问题讨论】:
标签: python windows ssh paramiko pexpect