• 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

  • 相关阅读:
    uva 147 Dollars
    hdu 2069 Coin Change(完全背包)
    hdu 1708 Fibonacci String
    hdu 1568 Fibonacci
    hdu 1316 How Many Fibs?
    poj 1958 Strange Towers of Hanoi
    poj 3601Tower of Hanoi
    poj 3572 Hanoi Tower
    poj 1920 Towers of Hanoi
    筛选法——素数打表
  • 原文地址:https://www.cnblogs.com/qq1207501666/p/6780675.html
Copyright © 2020-2023  润新知