• Python3-paramiko模块-基于SSH的远程连接模块


    Python3中的paramiko模块,基于SSH用于连接远程服务器并执行相关操作

      http://docs.paramiko.org/en/2.1/

    SSHClient 用于连接远程服务器并执行基本命令

    import paramiko
    
    # 创建SSH客户端对象
    ssh = paramiko.SSHClient()
    
    # 允许连接不再know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    # 连接服务器
    ssh.connect(hostname="172.16.110.218", port=22, username="root", password="******")
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command("ls /local/jet")
    
    # 获取命令执行结果
    result = stderr.read()
    result = result if result else stdout.read()
    print(str(result.decode("gbk")))
    
    # 关闭连接
    ssh.close()
    1.使用用户名密码连接

    import paramiko
    
    # 读取私钥文件
    private_key = paramiko.RSAKey.from_private_key_file("e:\id_rsa")
    
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    
    # 允许连接不再known_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    # 连接服务器
    ssh.connect(hostname="172.16.110.218", port=22, username="root", pkey=private_key)
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command("ls /local/jet")
    # 获取命令执行结果
    result = stderr.read()
    result = result if result else stdout.read()
    print(str(result.decode("gbk")))
    
    # 关闭连接
    ssh.close()
    2.使用私钥文件连接

    import paramiko
    from io import StringIO
    
    key_str = """-----BEGIN RSA PRIVATE KEY-----
    MIIEoQIBAAKCAQEA6eXFQDFRT+tbtnsw44+16fZa1cZF7nouFVRuIuEZx93Gu9Kr
    jBW2MFO/uyREHFK20xQzfX/jcD6/R1Yxh7jtLtN/uIUC3mV6yV/WjTmidH1ABlvq
    wWyF2i6Q0ZS3bmznuvi/Z1BVJQan9DaH17aQSA/xsKM08OPEO8PK7tuaXlzokj/7
    Tb14vOUnxN8C79iBcifoIlq6zpu2SlJpu/YUc3jX6nqJEtG/XwYHfTvwXGwlLCtD
    VOb8NtwjggmRbELNZ6QCY8rNo+xUP+9tnp6xa6io8gDg7yswaAvQBxe3F6NZCtc/
    sOceTKUIosYZi45tDqfL9YashOvbUNjkSLXQZQIBIwKCAQANXZY+LrQwc9la4nfS
    fT2YVzhj/LOJ+FpnnmyxiTSsVdDXiGGS+e0nVT4n83GbN+0wohGSJJCnVAruIi63
    TGVTIgdMX18/6Iqsa+Bf12hebY6hRxS6mHytYb8h6z2uieFbJCgxyhN+dWiu3otr
    aYSWZ0+jsY3/IvVFPmNeGy1kejp2qDYWxznzQwCCXpuVNJwXgYjTzdSDGm/GQeao
    sSuQlz6eRwI06KTuKw1s9tuMpcyhcvqWA7cApR5vNoGQVdUiYKdBuljr7hoo3oPX
    NdIuml09IpwyEnc1DDmpR1ynlFadScAyNLa6GQYI8y6tz5mudRiHxskDHG2Y0pl2
    XlqTAoGBAPiaKEi/cApypdcensuaBmhKlnGyzsg2qPY2v0Uy7L8mSfDxumkRfJN1
    PRao0bAsIwH0sTz4ImXU9ObXnV2Etrg+oCPTJ0hCjnc2Irfl4v+yvicbxrklbkxC
    kWlcfW2TQ/h38mLZ93veu0j67eXYhgZQ7dPMFXcupPFutfAI8cFPAoGBAPDbl///
    rvgpKse8yJSiuW2MNpv0+euhpBwGEeAA7Nrq2B8m5XljbeWh14Xhij4S86YuHeUb
    g5PWnagQMliJrgNPaG+SZnFAlxM+lrKCjdOJXSIoXHpdeb4FJHWYOXQPu3TSWjlo
    VSS1M9YLOILRV2VQuMrhWnef1WvvvXaoUN4LAoGBAL/HYOepn5MH/EbdG2ndOCSR
    T3xIG9xHbGYqO8eq8SW+c438TflIAQQJ++zoocJrMPLhVYbOC+gn8B/K5xxBzsil
    VvcQmqV1LBLR/YaMxQ5lUNxXQYeDRnVX7IR6jKT8k4UpVJVmUTOr0k496rift9j8
    mjWsEI8j+5WtLUQkKDYJAoGAPe9S+K92Io4+M1xuF5eOxGXiKBpsJqXoXvo/HFgC
    ZC3Ci6rqjO2ui4FjTk/wWRrQ8De+i17YsPysMofSbonNqRRrT+PRMxCb4GCNJpaZ
    f4m43OXOox9Z0cbO3Gj41LOWmmH58YE6dydH1/RBuz0lGg1xWL2a64+ABc/u4/9l
    QGkCgYAt3cW6UxKVdWejiZ/PRzsffdKuPjm9tTZu9hVBW8CzJD1byaeT8czjKtzv
    kKwhV8yqG0ZGqmGbxc00zJLh4pk1J45Nh0dLzAD0T6SskmmJQrJ+k1KPFzqDHj1H
    9KRVifIb6WKYBdWF6JXo2nBhlsSymBGPXSnY4YXbsNfWGQDm6g==
    -----END RSA PRIVATE KEY-----
    """
    private_key = paramiko.RSAKey(file_obj=StringIO(key_str))
    
    # 连接服务器
    transport = paramiko.Transport(('172.16.110.218', 22))
    transport.connect(username='root', pkey=private_key)
    ssh = paramiko.SSHClient()
    ssh._transport = transport
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('df')
    
    # 获取命令执行结果
    result = stderr.read()
    result = result if result else stdout.read()
    print(str(result.decode("gbk")))
    
    # 关闭连接
    transport.close()
    3.使用私钥字符串连接

    SFTPClient 用于连接远程服务器并执行上传下载

    import paramiko
    
    # 连接远程服务器
    transport = paramiko.Transport(("172.16.110.218", 22))
    transport.connect(username="root", password="*****")
    
    # 生成SFTPClient对象
    sftp = paramiko.SFTPClient.from_transport(transport)
    
    # 上传文件get('local_path', 'remote_path')
    sftp.put("/local/script/demo.py", "e:\demo.py")
    # 下载文件get('remote_path','local_path')
    sftp.get("e:\demo.py", "/local/script/demo.py")
    
    # 关闭连接
    transport.close()
    1.实现与远程服务器的文件上传与下载

    参考资料

      http://www.cnblogs.com/wupeiqi/articles/5095821.html

      http://www.cnblogs.com/qq1207501666/p/6780469.html

  • 相关阅读:
    GitLab 内存使用优化
    记一次 GitLab 的迁移过程
    MAC 最全快捷键
    IDEA中通过Java调用Python脚本报错
    远程服务调用PRC发展史
    分布式&微服务传送门
    (11)MySQL进阶篇SQL优化(InnoDB锁问题排查与解决)
    不懂物理的前端不是好的游戏开发者(一)—— 物理引擎基础
    京东购物小程序 | Taro3 项目分包实践
    浅谈树模型与集成学习-从决策树到GBDT
  • 原文地址:https://www.cnblogs.com/qq1207501666/p/6780675.html
Copyright © 2020-2023  润新知