zoukankan      html  css  js  c++  java
  • paramiko模块的使用

    """
    paramiko模块的使用
    周万春
    """
    
    """
    paramiko模块,基于SSH用于连接远程服务器并执行相关操作。
    """
    
    """
    模块介绍
    SSHClient:包装了Channel、Transport、SFTPClient。
    Channel:是一种类Socket,一种安全的SSH传输通道。
    Transport:是一种加密的会话(但是这样一个对象的Session并未建立),并且创建了一个加密的tunnels,这个tunnels叫做Channel。
    Session:是client与Server保持连接的对象,用connect()/start_client()/start_server()开始会话。
    """
    
    """
    安装paramiko
    [root@db01 ~]# yum -y install python3-pip
    [root@db01 ~]# pip3 install paramiko
    """
    
    """
    模块基础使用
    基于用户名和密码验证的连接,Python的Paramiko支持最直接的使用用户名和密码进行连接,然后执行命令。
    """
    
    #!/usr/bin/env python3
    #-*- coding: utf-8 -*-
    
    #导入模块
    import paramiko
    
    # 创建Paramiko的SSH对象
    ssh = paramiko.SSHClient()
    
    # 访问未知主机时的策略,自动添加策略,保存服务器的主机名和密钥信息。
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    # 连接服务器
    ssh.connect(hostname='10.0.0.11', port=22, username='root', password='mysql', timeout=4, allow_agent=False)
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('uptime')
    
    # 获取命令结果
    res_out = stdout.read().decode().rstrip('
    ')
    
    # 输出命令结果
    print(res_out)
    
    # 关闭连接
    ssh.close()
    
    """
    基于密钥验证的连接
    Paramiko模块同时还支持使用私钥认证的方式,需要用户提前配置好密钥认证。
    """
    
    
    """
    #!/usr/bin/env python3
    #-*- coding: utf-8 -*-
    
    # 导入模块
    import paramiko
    
    # 设置私钥文件
    private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')
    
    # 创建Paramiko的SSH对象
    ssh = paramiko.SSHClient()
    
    # 访问未知主机时的策略,自动添加策略,保存服务器的主机名和密钥信息。
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    # 连接服务器
    ssh.connect(hostname='10.0.0.11', port=22, username='root', pkey=private_key, timeout=4, allow_agent=False)
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('uptime')
    
    # 获取命令结果
    res_out = stdout.read().decode().rstrip('
    ')
    
    # 输出命令结果
    print(res_out)
    
    # 关闭连接
    ssh.close()
    """
  • 相关阅读:
    android开发 退出程序
    armeabi和armeabi-v7a引起的问题
    我的博客
    第二章 应用层(一) 应用层概览
    第一章 计算机网络和因特网
    Linux学习笔记——第一篇——Ubuntu安装与操作
    怒学Python——完结篇——I/O
    怒学Python——第四篇——函数与模块
    怒学Python——第三篇——结构控制
    怒学Python——第二篇——类型与运算
  • 原文地址:https://www.cnblogs.com/zhouwanchun/p/12968966.html
Copyright © 2011-2022 走看看