zoukankan      html  css  js  c++  java
  • python——数据库编程

    paramiko

    paramiko是基于python实现的ssh2远程安全连接,支持认证及密钥方式。可以实现远程命令执行、文件传输、中间ssh代理等功能。

    paramiko包含两个核心组件:SSHClient和SFTPClient

    SHHClient

    它是ssh服务会话的高级表示,该类封装了传输(transport)、通道(channel)及SFTPClient的校验、建立的方法,通常用于执行远程命令,下面是个例子:

    import paramiko
    
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname='192.168.10.20', port=22, username='test', password='123')
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('pwd')
    # 获取命令结果
    result = stdout.read()
    print(str(result,encoding='utf8'))
    # 关闭连接
    ssh.close()
    
    执行结果:
    /home/test/

    下面介绍它的几种常用方法

    connect方法

    connect方法实现了ssh连接并校验

    参数有:

      hostname:主机地址

      port:端口,默认22

      username:登录用户名

      password:密码

      pkey:私钥方式用于身份验证

      timeout:一个可选的超时时间的TCP连接

      allow_agent:设置为False时用于禁止连接到ssh代理

      compress:设置为True时打开压缩。

    exec_command方法

    远程命令执行方法,该命令的输入输出流为标准输入(stdin)、输出(stdout)、错误(stderr)的python文件对象。

    参数:command:执行命令

      bufsize:文件缓存区大小,默认为-1(不限制)

    load_system_host_keys方法

    加载本地公钥校验文件,默认为~/.ssh/known_hosts,飞默认路径需要手动指定

    参数:filename:指定的远程主机公钥记录文件。

    set_missing_host_key_policy方法

    设置连接的远程主机没有本地主机密钥或HostKeys对象时的策略,目前支持三种,分别是AutoAddPolicy、RejectPolicy、WarningPolicy,仅限用于SSHClient类,分别代表的含义如下:

      AutoAddPolicy,自动添加主机名及主机密钥到本地HostKeys对象,并将其保存,不依赖load_system_host_keys()的配置,即使~/.ssh/know_hosts不存在也不产生影响

      RejectPolicy,自动拒绝位置的主机名和密钥,依赖load_system_host_keys()的配置

      WarningPolicy,用于记录一个位置的主机密钥的Python的警告,并接受它,功能上与AutoAddPolicy相似,但未知主机会有告警

    SFTPClient类

    SFTPClient作为一个SFTP客户端对象,根据SSH传输协议的sftp会话,实现远程文件操作,比如文件上传、下载、权限、状态等操作,

    import paramiko
    
    transport = paramiko.Transport(('127.0.0.1',17181))
    transport.connect(username='tecom',password='pHgyZvyX43mdrJVJ')
    
    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(r'/home/tecom/1.txt', r'C:/Users/admin/Desktop/oldboy/1.txt')
    
    transport.close()

    下面介绍SFTPClient的常用方法。

     from_transport方法

    创建一个已连通的SFTP客户端通道

    参数说明:t(transport),一个已通过验证的传输对象。

    put方法

    上传本地文件到远程SFTP服务端

    参数说明:localpath:str类型,上传的本地文件全路径(源)

      remotepath:str类型,远程文件全路径(目标)

      callback:获取已接收的字节数及总传输字节数,以便毁掉函数调用,默认为None

      confirm(bool):文件上传完毕i后是否调用stat()方法,以便确认文件大小

    get方法

    从远程SFTP服务端下载到本地。

    参数:remotepath,远程路径(源)

      localpath,本地路径(目标)

    其他方法

    SFTPClient类其他常用方法

    mkdir:在SFTP服务器端创建目录,如sftp.mkdir('/home/test',0755)

    remove:删除SFTP服务器端指定目录,如sftp.remove('/home/test')

    rename:重命名SFTP服务器端文件或目录,如sftp.rename('/home/test.sh','/home/test1.sh')

    stat:获取SFTP服务器端指定文件信息,如sft.stat('/home/testfile.sh')

    listdir:获取远程SFTP服务器端指定目录信息,以Python的列表(list)形式返回,如,sftp.listdir('/home')

  • 相关阅读:
    Leetcode Plus One
    Leetcode Swap Nodes in Pairs
    Leetcode Remove Nth Node From End of List
    leetcode Remove Duplicates from Sorted Array
    leetcode Remove Element
    leetcode Container With Most Water
    leetcode String to Integer (atoi)
    leetcode Palindrome Number
    leetcode Roman to Integer
    leetcode ZigZag Conversion
  • 原文地址:https://www.cnblogs.com/fukuda/p/5720268.html
Copyright © 2011-2022 走看看