每次我嘗試使用winpexpect產卵終端(例如:openssh,ssh
)。如果我做winpexpect.winspawn('ssh ...')
我遇到了「僞終端將不會被分配,因爲標準輸入不是終端。」。如果我使用winpexpect.winspawn('ssh -t -t ...')
強制終端,那麼即使ssh客戶端正在連接到服務器,我的讀取緩衝區中也沒有任何內容。其他交互式終端也是如此,它們只是掛起而沒有任何東西出現在讀緩衝區中。然而,對於終端,如ping
winpexpect的命令工作。CPython與Windows上衍生的tty終端不能很好地互動
我發現實際上工作的是使用putty的plink.exe,winpexpect.winspawn('plink ...'
。這和putty.exe是一樣的,但是它不會做終端仿真,我只是得到原始的telnet /解密的ssh數據。然而,這不是真正理想的解決方案。
我真的被困在如何獲得一個spawner /期望庫與Windows上的終端工作!我甚至嘗試過使用expectJ,只是純Java,而且也有同樣的問題。
你有沒有想過使用paramiko呢? –
它可能與pty不是Windows原生的有關。我不確定他們是如何實現它的,但很可能他們必須以某種方式模擬它們。 Windows上甚至不存在'os.openpty'函數。所以我期望它是「dicy」。你運行這個是cygwin嗎?或者使用本地Python構建? – Keith
paramiko ...將需要大量的重寫。我正試圖移動使用telnetlib編寫的東西,它已經有了方法。我的目標是使用winpexpect來調用一個ssh客戶端。這將是一個非常簡單的方法,不需要重寫。 – Zombies