zoukankan      html  css  js  c++  java
  • python paramiko模块:远程连接服务器

    1.  SFTP基于 用户名密码 登录服务器,实现上传下载:

    import paramiko
    
    transport = paramiko.Transport(('hostname', 22))   # 生成trasport,配置主机名,端口
    transport.connect(username='root',password='****')  # 登录名、密码
    
    sftp = paramiko.SFTPClient.from_transport(transport)
    #
    将id_rsa 上传至服务器并重命名 /tmp/test.py
    sftp.put('id_rsa', '/tmp/ras.py')
    # ras.py 下载到本地 ras.py
    sftp.get('/tmp/ras.py', 'ras.py')
    # 关闭连接
    transport.close()
    

    2. SFTP基于 密钥 登录服务器

    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file('id_rsa') # id_rsa是本地的私钥,需要在服务器上配制公钥
    
    transport = paramiko.Transport(('hostname', 22))   # 配置主机名和端口
    transport.connect(username='root', pkey=private_key)  # 连接root用户,使用密钥
    
    sftp = paramiko.SFTPClient.from_transport(transport)
    # 将local.py 上传至服务器 /tmp/test.py
    sftp.put('/tmp/local.py', '/tmp/test.py')
    # test.py 下载到本地 local.py
    sftp.get('test.py', 'local.py')

    3. SSH基于 密钥 登录服务器

    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file('id_rsa')
    
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不存在在know_hosts文件里的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname='hostname', port=22, username='root',pkey=private_key)
    
    # 执行命令
    stdin,stdout,stderr = ssh.exec_command('ls')
    result = stdout.read()
    print(result)
    
    # 关闭连接
    ssh.close()
    

    4. SSH 封装 Transport 基于 密钥 登录服务器

    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file('id_rsa') # id_rsa是本地私钥,需要服务器配置公钥
    transport = paramiko.Transport(('hostname', 22))
    transport.connect(username='root',pkey=private_key)
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    ssh._transport = transport
    # 执行命令
    stdin,stdout,stderr = ssh.exec_command('ls')
    result = stdout.read()
    print(result)
    
    # 关闭连接
    transport.close()

    5. SSH 基于 用户名密码 登录服务器

    # SSHClient 基于用户名和密码连接服务器
    import paramiko
    
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname='hostname', port=22, username='root', password='****')
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('ls')
    # 获取命令结果
    result1 = stdout.read()
    result2 = stderr.read()
    print(result1,result2,sep='
    ')
    # 关闭连接
    ssh.close()
    
    
    print(f'{"SSH封装Transport":=^50}')
    
    # SSHClient 封装 Transport,基于用户名和密码连接服务器
    
    import paramiko
    
    transport = paramiko.Transport(('hostname', 22))
    transport.connect(username='root', password='****')
    
    ssh = paramiko.SSHClient()
    ssh._transport = transport
    
    stdin, stdout, stderr = ssh.exec_command('ls')
    print (stdout.read())
    
    transport.close()
  • 相关阅读:
    leetcode-- 79. Word Search
    Zuul 网关
    Feign
    Hystrix 熔断器
    Ribbon
    Spring-Cloud Eureka
    JacksonJson的使用
    springboot 常见的启动器
    axiso 的使用
    Java含有Date的对象序列化网络传输
  • 原文地址:https://www.cnblogs.com/wztshine/p/11964321.html
Copyright © 2011-2022 走看看