【问题标题】:ssh with winpexpectssh 与 winpexpect
【发布时间】:2012-10-12 19:51:24
【问题描述】:

我一直在尝试在 Windows 平台上运行此命令以从 .py 进行 ssh:

child = winpexpect.spawn('ssh %s@%s' % ('myID','m.y.i.p'))

它的功能应该与 pexpect 类似,但我收到此错误:

pexpect.ExceptionPexpect: The command was not found or was not executable: ssh.

我已经确认 C:\rhcygwin\bin 在我的路径中。关于如何指示 .py 文件找到 ssh 命令的任何建议?

编辑:我改变了方法:在我的 .py 中运行此代码

    command = ['bash', '-c', './myssh.sh']
    proc = subprocess.Popen(command, stdout = subprocess.PIPE)

它很简陋,但它会成功连接。

【问题讨论】:

标签: python ssh pexpect


【解决方案1】:

据我所知,pexect 实际上并不适用于 Windows。尝试了部分端口,但在我上次检查时它被破坏了。

如果您想在 Windows 上使用 python 通过 ssh 自动执行某些操作,那么使用paramiko library 可能会更好。有good docs,但你需要编译pycrypto,否则得到precompiled binary

【讨论】:

  • 感谢@SpencerRathbun,并为后代:如果您可以构建 pycrypto/paramiko,这是解决此问题的一个非常干净的解决方案。我昨天问了一个类似的问题,这里提供了有用的 paramiko 代码:stackoverflow.com/questions/11147548/…。就我而言,我没有运气在我的机器上构建一个 pycrypto 库,我已经尝试了很多指南。
  • @gortron 我在 Windows 上编译时遇到了同样的问题,但我找到了一个可以工作的预编译库。你会认为编译会比它更容易......
【解决方案2】:

您必须使用 winspawn 方法,并指定 .exe 扩展名:

child = winpexpect.winspawn('ssh.exe %s@%s' % ('myID','m.y.i.p'))

【讨论】:

    猜你喜欢
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 2014-01-10
    • 1970-01-01
    相关资源
    最近更新 更多