Python + pexpect - 如何建立 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.expect ("user@localhost\"''s password.*:\"'")
child.sendline ('xxyyzz')

print "OK"

问题是密码 'xxyyzz' 从未出现在终端上,所以我认为 child.sendline 不起作用并且是语法问题。

最佳答案

您在这里将输入传递给 gnome-terminal 进程。那行不通,因为它是 ssh(从技术上讲,bash,但 bash 的 stdin 也是 ssh 的) 需要该输入,而不是 gnome-terminal


无论如何,您可能很难让它可靠地工作。您可能应该考虑使用 Python SSH 库。

好的选择包括:

  • Paramiko - 低级 Python SSH 库
  • Fabric - 更高级别的库(在引擎盖下使用 Paramiko)

关于Python + pexpect - 如何建立 ssh 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28046781/

相关文章:

bash - bash中的错误检查功能

python - 多个json字典python

python - 使用方括号访问 Pandas 列与使用点(如属性)

python - "Broken"以 UTF-8 编码的 unicode 字符串?

java - 有适用于 Linux 的 Android SDK 吗?

python - 从子进程python多线程调用中以提升的权限运行bash脚本

Python 正则表达式 re.split 使用特定单词作为分隔符

linux - 如何使用 cURL 从文件中读取标题?

linux - readelf 报告 so file as NEEDED,但没有使用它的函数(或其他符号)

bash - 从 bash 文件中读取星号字符 (*)