Python+;如何建立ssh连接?
我一直试图通过Python+pexpect建立ssh连接,但是我无法发送我想要的行 我认为这当然是一个语法问题,但我不知道它发生在哪里Python+;如何建立ssh连接?,python,linux,bash,ssh,Python,Linux,Bash,Ssh,我一直试图通过Python+pexpect建立ssh连接,但是我无法发送我想要的行 我认为这当然是一个语法问题,但我不知道它发生在哪里 #! /usr/bin/python # -*- encoding: utf-8 -*- import re import pexpect import sys child = pexpect.spawn ("gnome-terminal -e 'bash -c \"ssh -X user@localhost; exec bash\"'") child.e
#! /usr/bin/python # -*- encoding: utf-8 -*-
import re
import pexpect
import sys
child = pexpect.spawn ("gnome-terminal -e 'bash -c \"ssh -X user@localhost; exec bash\"'")
child.expect ("user@localhost\"''s password.*:\"'")
child.sendline ('xxyyzz')
print "OK"
问题是,密码“xxyyz”从未出现在终端上,因此我认为
子.sendline
不起作用,是一个语法问题。您正在将输入传递到gnome终端
进程。这是行不通的,因为需要输入的是ssh
(从技术上讲是bash
,但是bash的stdin
也是ssh
),而不是gnome终端
不管怎样,你可能很难让它可靠地工作。您可能应该考虑使用Python SSH库。
好的选择包括:
- -低级Python SSH库
- -更高级别的库(在引擎盖下使用Paramiko)
谢谢你的建议,但我更喜欢使用pexpect。我找到了方法:
#!/usr/bin/env python
import pexpect
ssh_newkey = 'Are you sure you want to continue connecting'
# my ssh command line
child=pexpect.spawn('ssh username@server uname -a')
i=child.expect([ssh_newkey,'password:',pexpect.EOF])
if i==0:
print "I say yes"
child.sendline('yes')
i=child.expect([ssh_newkey,'password:',pexpect.EOF])
if i==1:
print "I give password",
child.sendline("xxxx")
child.expect(pexpect.EOF)
elif i==2:
print "I either got key or connection timeout"
pass
print child.before # print out the result
问候 好的,那么如何在ssh的输入stdin中包括Paramiko和de-pass呢?你能给我举个例子吗?@user3421938你应该检查Paramiko文档。你可以从这里开始: