python获取交互式ssh shell的方法

获取交互式SSH shell是实现自动化配置、自动化发布、自动化管理等重要操作的关键。Python作为一种高级编程语言,提供了丰富的模块和工具来帮助我们实现自动化操作。下面是获取交互式SSH shell的方法的完整攻略。

使用paramiko模块获取SSH shell

Paramiko是一个Python库,可以用于SSHv2协议的加密与认证。它支持Python 2.7和Python 3.4及以上版本。使用paramiko模块可以轻松地实现获取SSH shell的操作流程,具体代码如下:

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('your_host', port=22, username='your_username', password='your_password')
chan = ssh.invoke_shell()

while True:
    resp = chan.recv(9999)
    if not resp:
        break
    print(resp.decode('utf-8'))

stdin = chan.makefile('wb')
stdout = chan.makefile('r')

stdin.write(b'your_command\n')
stdout.read()
stdin.close()
stdout.close()
ssh.close()

上面的代码首先使用paramiko的SSHClient建立与目标主机的SSH连接,然后使用invoke_shell()方法获取SSH通道。接着通过makefile()方法获取标准输入输出的通道,最后使用write()方法写入要执行的命令并使用read()方法读取输出结果。

使用pexpect模块获取SSH shell

pexpect是一个Python模块,它是实现自动化交互的强大工具。pexpect可以仿真人的动作来实现与目标系统的交互。这个过程包括发送命令、等待响应、检查输出结果等。具体代码如下:

import pexpect

ssh_newkey = 'Are you sure you want to continue connecting'
hostname = 'your_host'
password = 'your_password'
username = 'your_username'
command = 'your_command'

ssh_conn = pexpect.spawn('ssh ' + hostname + ' ' + command)
ret = ssh_conn.expect([pexpect.TIMEOUT, ssh_newkey, '[P|p]assword:'])
if ret == 0:
    print('Error: ssh connection timeout')
    return None
if ret == 1:
    ssh_conn.sendline('yes')
    ret = ssh_conn.expect([pexpect.TIMEOUT, '[P|p]assword:'])
    if ret == 0:
        print('Error: ssh connection timeout')
        return None
ssh_conn.sendline(password)
ssh_conn.expect('#')
print(ssh_conn.before)

上面的代码首先使用spawn()方法建立与目标主机的SSH连接,然后使用expect()方法等待连接请求的响应。接着通过sendline()方法发送密码和要执行的命令,并使用expect()方法等待命令执行的结果。最后使用before属性读取输出结果。

以上就是使用Python获取交互式SSH shell的方法攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python获取交互式ssh shell的方法 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python操作redis实例小结【String、Hash、List、Set等】

    以下是“Python操作redis实例小结【String、Hash、List、Set等】”的完整攻略。 1. Redis简介 Redis是一个开源的内存数据结构存储系统,它支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等。Redis的优点是速度快、支持丰富的数据结构、支持事务和持久化等功能,因此被广泛应用于缓存、消息队列、计数器、排行榜等场景。 2…

    python 2023年5月13日
    00
  • python使用技巧-文件读写

    当我们使用Python编写程序时,经常需要从文件中读取数据或者将数据写入到文件中。文件操作是Python编程中的常见任务之一,所以了解Python的文件读写技巧是很重要的。下面是一份完整的“Python使用技巧-文件读写”的攻略: 文件读取 打开文件 在Python中,我们可以使用open()函数打开一个文件。open()函数接收两个参数,第一个参数是文件名…

    python 2023年6月3日
    00
  • 在Python中把赫米特数列转换为多项式

    将赫米特数列转换为多项式,需要使用Python中的NumPy库和SymPy库。以下是详细步骤: 导入必要的库 首先,需要导入NumPy和SymPy库: import numpy as np from sympy import * 定义赫米特数列 赫米特数列是一个递推序列,可以使用递推公式来生成。SymPy库中已经内置了赫米特数列的递推公式,可以直接使用: n…

    python-answer 2023年3月25日
    00
  • Python中排序函数sorted()函数的使用实例

    针对“Python中排序函数sorted()函数的使用实例”这个话题,我为大家整理了以下的完整攻略: 一、什么是sorted()函数? 首先,我们先来了解一下sorted()函数。sorted()函数是Python中内置的用于排序的函数,它可以对字符串、数字、列表、元组等可迭代的数据类型进行排序。 二、sorted()函数的基本用法 sorted()函数的一…

    python 2023年5月14日
    00
  • python3中zip()函数使用详解

    Python3中zip()函数使用详解 介绍 zip() 函数可以将多个可迭代对象(例如列表、元组、字典等)中对应位置的元素打包成一个元组,并返回由这些元组组成的迭代器。新的迭代器生成的元素个数由输入的可迭代对象中元素数量最少的那个确定。 语法 zip([iterable, …]) 参数 iterable(可迭代对象): 一个或多个可迭代对象,例如列表、…

    python 2023年5月14日
    00
  • Python实现学生成绩管理系统

    一、Python实现学生成绩管理系统 实现思路: 学生成绩管理系统是一种简单的数据库管理系统,要实现其主要分为以下几步: 创建数据库及表格。 实现添加学生信息功能。 实现添加学生成绩功能。 实现查询学生信息及成绩功能。 实现删除学生信息功能。 实现修改学生成绩功能。 创建数据库及表格 使用Python内置模块sqlite3创建一个数据库,该数据库包含学生信息…

    python 2023年5月30日
    00
  • python实现图片处理和特征提取详解

    Python实现图片处理和特征提取详解 简介 Python是一门优秀的编程语言,在计算机视觉和图像处理领域有广泛应用。本文主要介绍如何使用Python对图片进行处理和特征提取。 图片预处理 在进行特征提取之前,我们需要对图片进行预处理。主要包括以下步骤: 1. 读取图片 使用Python中的Pillow库或OpenCV库可以读取图片文件。例如,使用Pillo…

    python 2023年5月18日
    00
  • python字符串格式化函数

    下面是关于“python字符串格式化函数”的完整攻略。 什么是字符串格式化 字符串格式化是指将一个或多个变量插入到字符串中指定的位置。在Python中,字符串格式化可以通过多种方式实现,其中格式化字符串是比较基础且常用的一种方式。 格式化字符串的基本语法 格式化字符串使用花括号 {} 加上一个或多个标记代替待插入的值。标记是一个可选项,可以对插入的值进行转换…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部