zoukankan      html  css  js  c++  java
  • python网络编程-paramiko模块

    paramiko模块

    • 该模块基于SSH用于连接远程服务器并执行相关操作
      参考文档

    SSHClient

    • 用于连接远程服务器并执行命令
    import paramiko
    
    #创建SSH对象
    ssh = paramiko.SSHClient()
    #允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    #连接服务器
    ssh.connect(hostname='c1.salt.com',port=22,username='root',password='pwd')
    #执行命令
    stdin,stdout,stderr = ssh.exec_command('df')
    #stdin返回输入的命令,stdout返回命令结果,stderr返回错误信息(stdout和stderr只会有一个有结果,错误时stderr有结果,正确是stdout有结果)
    #获取命令结果
    res,err = stdout.read(),stderr.read()
    result = res if res else err
    print(result.decode())
    

    SFTPClient

    • 用于连接远程服务器并执行上传下载
    import paramiko
    
    transport = paramiko.Transport('hostname',22)
    transport.connect(username='root',password='pwd')
    
    sftp = paramiko.SFTPClient.form_transport(transport)
    #讲localtion.py上传至服务器/tmp/test.py
    sftp.put('/tmp/localtion.py','/tmp/test.py')
    #将remove_path下载到本地local_path
    sftp.get('remove_path','local_path')
    
    transport.close()
    

    SSH密钥

    • RSA 非对称密钥验证
    • 密钥分两部分
    • 公钥 pubilc key
    • 私钥 private key

    生成公钥私钥

    • ssh -keygen
    • 默认存放在家目录下的.ssh/id_rsa
    • 其中/home/lmc/.ssh/id_ras是私钥,/home/lmc/.ssh/id_ras.pub是公钥

    拷贝公钥给要登录的机器

    • ssh -copy-id "-p52113 root@10.0.0.31"

    在SSH客户端上拷贝公钥并存储在windows

    • sz ~/.ssh/id_rsa

    基于公钥的SSH

    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
    
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname='c1.salt.com', port=22, username='wupeiqi', pkey=private_key)
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('df')
    # 获取命令结果
    result = stdout.read()
    
    # 关闭连接
    ssh.close()
    

    基于公钥密钥上传下载

    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
    
    transport = paramiko.Transport(('hostname', 22))
    transport.connect(username='wupeiqi', pkey=private_key )
    
    sftp = paramiko.SFTPClient.from_transport(transport)
    # 将location.py 上传至服务器 /tmp/test.py
    sftp.put('/tmp/location.py', '/tmp/test.py')
    # 将remove_path 下载到本地 local_path
    sftp.get('remove_path', 'local_path')
    
    transport.close()
    
  • 相关阅读:
    day10函数名称空间与作用域(3)
    day10函数参数使用(2)
    day10函数基础(1)
    文件处理
    vue打包时semver.js版本报错
    js修改日期
    vue click事件获取当前元素属性
    js截取关键字之后的字符串
    css 清除浮动
    纯CSS绘制三角形
  • 原文地址:https://www.cnblogs.com/limich/p/7477059.html
Copyright © 2011-2022 走看看