0

有没有办法:
1. 打开 putty/plink 会话并通过 python 登录到 linux 服务器
2. 在当前会话中通过 python 登录到另一个 linux 服务器
3. 让 putty 会话保持打开状态并可供用户手动运行其他命令?

注意:
- 脚本需要在通过 putty 访问 linux 服务器的 Windows 机器上运行。
- 1 很容易使用 subprocess.Popen()。
- 我一直在为下一次服务器登录发送密码。RSA ssh 密钥在我们的服务器上受到限制。

有任何想法吗?可能是python脚本的其他替代品吗?

4

1 回答 1

1

是的,你可以这样做。使用pexpect.

但我必须注意,如果不安装 cygwin,就不能在 Windows 上使用 pexpect。当您想在没有 cygwin 的情况下直接在 Windows 上运行程序时,您需要使用winexpect( https://bitbucket.org/geertj/winpexpect/wiki/Home )。

Pexpect/Winexpect 使用示例

#!/usr/bin/env python
import pexpect

ssh_newkey = 'Are you sure you want to continue connecting'
# my ssh command line
p=pexpect.spawn('ssh mysurface@192.168.1.105 uname -a')

i=p.expect([ssh_newkey,'password:',pexpect.EOF])
if i==0:
    print "I say yes"
    p.sendline('yes')
    i=p.expect([ssh_newkey,'password:',pexpect.EOF])
if i==1:
    print "I give password",
    p.sendline("mypassword")
    p.expect(pexpect.EOF)
elif i==2:
    print "I either got key or connection timeout"
    pass
print p.before # print out the result

在您的情况下,您必须使用plink代替sshwinexpect代替pexpect

于 2012-07-12T15:27:19.640 回答