我一直在尝试通过 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.expect ("user@localhost\"''s password.*:\"'")
child.sendline ('xxyyzz')
print "OK"
问题是密码 'xxyyzz' 从未出现在终端上,所以我认为 child.sendline
不起作用并且是语法问题。
最佳答案
您在这里将输入传递给 gnome-terminal
进程。那行不通,因为它是 ssh
(从技术上讲,bash
,但 bash 的 stdin
也是 ssh
的) 需要该输入,而不是 gnome-terminal
。
无论如何,您可能很难让它可靠地工作。您可能应该考虑使用 Python SSH 库。
好的选择包括:
关于Python + pexpect - 如何建立 ssh 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28046781/