• 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()
  • 相关阅读:
    字体图标
    css精灵图
    css定位
    浮动的清除
    浮动、版心布局
    css 盒子模型
    css三大特性、行高属性、权重
    JSP实现上传文件(或图片)到MySQL
    MySQL 错误. Packet for query is too large (***> 4194304). You can change......
    使用Servlet3.0提供的API实现文件上传到指定位置
  • 原文地址:https://www.cnblogs.com/wztshine/p/11964321.html
Copyright © 2020-2023  润新知