• paramiko的安装与使用


    paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,支持在远程登录服务器执行命令和上传下载文件的功能。

    安装

    pycrypto下载地址:

    http://www.voidspace.org.uk/python/modules.shtml#pycrypto

    ecdsa下载地址:

    https://pypi.python.org/pypi/ecdsa/0.9

    paramiko安装:pip install paramiko

    登陆

    基于用户名密码的SSHClient登陆

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    __Author__ = 'kongZhaGen'
    import paramiko
    
    # 建立SSH服务器的高级会话模式
    ssh = paramiko.SSHClient()
    # 允许连接不在known_hosts中的服务器
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 通过用户名及密码登陆服务器
    ssh.connect(hostname='172.10.228.2', port=22, username='root', password='654321')
    # 执行结果返回三个值
    stdin, stdout, stderr = ssh.exec_command('df -h')
    print stdout.read()
    print '------------------'
    print stderr.read()
    ssh.close()
    

      结果

     基于RSAKEY的SSHClient登陆

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    __Author__ = 'kongZhaGen'
    import paramiko
    
    # 本地可用的私钥文件路径,生成私钥时如果有密码,需要加password参数
    key = paramiko.RSAKey.from_private_key_file('id_rsa.txt')
    # 建立SSH服务器的高级会话模式
    ssh = paramiko.SSHClient()
    # 允许连接不在known_hosts中的服务器
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 通过用户名及密码登陆服务器
    ssh.connect(hostname='192.168.56.41', port=22, username='root', pkey=key)
    # 执行结果返回三个值
    stdin, stdout, stderr = ssh.exec_command('df -h')
    print stdout.read()
    print '------------------'
    print stderr.read()
    ssh.close()
    

      结果

    基于用户名密码的Socket连接

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    __Author__ = 'kongZhaGen'
    import paramiko
    
    # 初始化一个paramiko的Socket对象
    trans = paramiko.Transport(('192.168.56.41', 22))
    # 建立基于Socket的ssh2连接
    trans.connect(username='root', password='rootroot')
    # 建立SSH服务器的高级会话
    ssh = paramiko.SSHClient()
    # 将Socket连接赋与ssh会话
    ssh._transport = trans
    # 通过SSH会话执行命令
    stdin, stdout,stderr = ssh.exec_command("df -h")
    print stdout.read()
    
    # 会话关闭
    ssh.close()
    trans.close()
    

      

    基于RSA的SOCKET连接

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    __Author__ = 'kongZhaGen'
    import paramiko
    
    # 私钥的本地路径
    key = paramiko.RSAKey.from_private_key_file("id_rsa.txt")
    # 初始化一个paramiko的Socket对象
    trans = paramiko.Transport(('192.168.56.41', 22))
    # 建立基于Socket的ssh2连接
    trans.connect(username='root', pkey=key)
    # 建立SSH服务器的高级会话
    ssh = paramiko.SSHClient()
    # 将Socket连接赋与ssh会话
    ssh._transport = trans
    # 通过SSH会话执行命令
    stdin, stdout,stderr = ssh.exec_command("df -h")
    print stdout.read()
    
    # 会话关闭
    ssh.close()
    trans.close()
    

      

     数据传输

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    __Author__ = 'kongZhaGen'
    import paramiko
    
    # 私钥的本地路径
    key = paramiko.RSAKey.from_private_key_file("id_rsa.txt")
    # 初始化一个paramiko的Socket对象
    trans = paramiko.Transport(('192.168.56.41', 22))
    # 建立基于Socket的ssh2连接
    trans.connect(username='root', pkey=key)
    # 建立一个SFTP会话,建立一个SFTP通道,用于传输数据
    sft = paramiko.SFTPClient.from_transport(trans)
    # sft.put("kongtest.py","/root/kongtest.py")
    sft.get('/root/install.log','install.log')
    trans.close()
    

      

      

  • 相关阅读:
    centos7以yum方式安装zabbix-agent客户端服务
    centos7搭建nexus maven私服
    pyinstaller打包python项目为windows运行exe程序
    nginx 查看安装的模块以及安装新模块
    securecrt终端显示乱码问题
    利用Anemometer做mysql慢日志的查询与可视化
    centos7安装kubernetes1.18.5
    k8s执行kubectl相关命令报错:Unable to connect to the server: x509
    postman接口测试10_导入curl请求接口
    app测试04_app性能测试之perfdog
  • 原文地址:https://www.cnblogs.com/kongzhagen/p/6836432.html
Copyright © 2020-2023  润新知