簡體   English   中英

winpexpect表現不像pexpect

[英]winpexpect not behaving like pexpect

我已經有幾天了這個問題,我不知道出了什么問題。

我有一個在OSX上運行的使用pexpect的簡單python腳本,該腳本啟動ssh-keygen並自動按回車鍵以生成密鑰對,並且運行良好。 我想在Windows上做同樣的事情。 為了在Windows上獲得ssh和ssh-keygen,我安裝了Windows的OpenSSH,它使用CYGWIN支持文件的一部分,使cmd提示符下的ssh作為正常的Windows程序從cmd提示符下運行。 我將相同的腳本移植到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: :

在這里,它適合所有永恆的數碼塵埃兔子。

我也不明白為什么它在預期的冒號后面也變成“:”。

也許我可以使用另一個模塊,使我與Windows的OpenSSH更好地通信嗎?

相當一段時間以前,我看着winpexpect。 我也無法運行它,它只是掛了。 與不受支持的部分有關,如果我沒記錯的話,還有一個不完整的端口。

由於我需要它用於ssh,所以最終用paramiko代替了它。 它需要pycrypto,除非您使用預編譯的安裝程序 ,否則在Windows上進行設置很麻煩。 對於密鑰生成,請參閱docs的本部分 它具有密鑰的加載和保存。 也要注意缺少主機鍵功能。

為了快速起步並運行,這里有一個概述 請注意,它不會遍歷所有函數調用,例如他為何使用AutoAddPolicy() 檢查文檔的優缺點和更多詳細信息。

這是一個fork項目winpexpect :此版本修復了許多錯誤。 你可以試試看。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM