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')

  • 相关阅读:
    python3
    hive与hbase集成
    spark读取hbase形成RDD,存入hive或者spark_sql分析
    spark机器学习笔记01
    CodeForces 55D Beautiful numbers
    NOIP 2016 D2T2 蚯蚓](思维)
    SCOI 2009 围豆豆(状压DP)
    POJ 1852 Ants(贪心)
    STA树的深度(树型DP)
    HDU 5963 朋友 (找规律,思维)
  • 原文地址:https://www.cnblogs.com/fukuda/p/5720268.html
Copyright © 2011-2022 走看看