python获取交互式ssh shell的方法

yizhihongxing

获取交互式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获取智慧校园每日课表并自动发送至邮箱

    下面就是“用Python获取智慧校园每日课表并自动发送至邮箱”的完整攻略: 确定获取课表的方式 首先,需要确定获取智慧校园每日课表的方式。一般情况下,智慧校园会提供网页和移动端两个平台供学生查看课表。因此,可以选择使用Python中的网络爬虫技术来获取网页端的课表信息,或者使用微信API Library对移动端的课表信息进行爬取。 编写Python代码 下一…

    python 2023年5月19日
    00
  • python密码学Base64编码和解码教程

    Python密码学Base64编码和解码教程 简介 Base64是一种用来将二进制数据转化为ASCII字符的编码方式,常用于在不可靠的网络环境下传输文本信息。在密码学中,也常用Base64编码来将需要加密的二进制数据转换为可以存储和传输的文本格式。 Python内置了base64模块,可以方便地进行Base64编码和解码操作。 Base64编码 Base64…

    python 2023年5月20日
    00
  • Python的type函数结果你知道嘛

    当我们需要判断某个变量的数据类型时,可以使用Python的type()函数。type()函数可以接受一个参数作为输入,对这个参数的数据类型进行判断并返回结果。 下面是使用type()函数的基本语法: type(object) 其中,object参数代表要判断数据类型的对象,可以是任意Python对象。 接下来,我们通过两个示例来详细讲解type()函数的使用…

    python 2023年6月3日
    00
  • python中几种括号的使用()、[]、{}举例说明

    下面是详细讲解“Python中几种括号的使用()()、[]、{}举例说明”的攻略: 1. () 圆括号 在 Python 中,() 字符表示圆括号。通常使用圆括号表示函数调用、数学运算符优先级和元组数据类型。 1.1 函数调用 圆括号可以用于调用函数。例如,我们可以定义一个函数来实现两个数字相加的操作: def add_numbers(x, y): retu…

    python 2023年6月5日
    00
  • Python pandas对excel的操作实现示例

    下面为您讲解”Python Pandas 对 Excel的操作实现示例” 的完整实例教程。 介绍 Pandas是一个基于NumPy的Python开源数据分析工具,可以方便地对数据进行读取、处理、清洗、统计、分析等操作。而Excel作为数据处理中经典的办公软件,也是数据表格的代表,通常用户会使用Excel来处理和分析数据。在工作中,当需要大量处理Excel表格…

    python 2023年5月13日
    00
  • Python Numpy计算各类距离的方法

    Python Numpy计算各类距离的方法 介绍 在数学和计算机科学中,距离是用于度量两个对象之间的相似度或差异的度量值。在机器学习和数据挖掘领域,距离是一种常见的距离测量方法,用于比较和分类数据。 Python Numpy库提供了许多计算距离的函数,可以用于各种数据分析和机器学习任务。本文将介绍Numpy中的常用距离计算函数及其用法。 Euclidean …

    python 2023年5月14日
    00
  • python实现文本界面网络聊天室

    Python实现文本界面网络聊天室攻略 介绍 网络聊天室是一种将多用户连接到同一聊天室中进行实时通信的应用程序。在这种聊天室中,用户可以向其他用户发送消息,并从其他用户处接收消息。在本文中,我们将使用Python编写一个文本界面网络聊天室。 步骤 第一步:创建服务端 服务端是聊天室中的核心组件,负责监听客户端的连接请求,并将消息转发给其他客户端。在Pytho…

    python 2023年5月30日
    00
  • Python3爬虫之urllib携带cookie爬取网页的方法

    Python3爬虫之urllib携带cookie爬取网页的方法 对于需要登录的网站,我们需要在发送请求时携带cookie信息,才能够获取到网站的内容。在Python中,我们可以使用urllib库来发送网络请求,并在请求中携带cookie信息。 以下是使用urllib携带cookie进行爬取的完整攻略: 1、获取cookie 在发送请求时,我们需要先获取coo…

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