欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

paramiko - 实现python文件操作远程服务器

最编程 2024-02-10 09:20:04
...

基础介绍

  • 源码仓库

    https://github.com/paramiko/paramiko.git

  • 作用:在python脚本或程序中使用SSH协议对远程服务器执行操作

    SSH:Secure Shell的缩写,专为远程登录会话和其他网络服务提供安全性的协议
    
  • 安装:

    pip install paramiko
    

常用内容

SSHClient

  • 封装ssh会话,包括Transport,Channel及SFTPClient建立的方法

  • client = patamiko.SSHClient()

  • set_missing_host_key_policy():远程服务器没有在know_hosts文件中时的策略

    - AutoAddPolicy 自动添加主机名及主机密钥到本地HostKeys对象,即新建立ssh连接时不需要再输入yes或no进行确认
    - WarningPolicy 用于记录一个未知的主机密钥的python警告,功能上和AutoAddPolicy类似,但是会提示是新连接
    - RejectPolicy 自动拒绝未知的主机名和密钥,此为默认选项
    
  • client.connect() 实现远程连接认证

    hostname 连接的目标主机
    port=SSH_PORT 指定端口
    username=None 验证的用户名
    password=None 验证的用户密码
    pkey=None 私钥方式用于身份验证
    key_filename=None 一个文件名或文件列表,指定私钥文件
    timeout=None 可选的tcp连接超时时间
    allow_agent=True, 是否允许连接到ssh代理,默认为True 允许
    look_for_keys=True 是否在~/.ssh中搜索私钥文件,默认为True 允许
    compress=False, 是否打开压缩
    私钥配置:
    private = paramiko.RSAKey.from_private_key_file('/Users/ch/.ssh/id_rsa')
    
  • exec_command():在远程服务器执行的Linux命令

    返回stdin,stdout,stderr,即终端的标准输入,标准输出和错误输出
    可以使用stdout.read()/readline()/readlines获取终端屏幕输出的所有内容
    
  • open_sftp():在当前ssh会话的基础上创建一个sftp会话,返回一个SFTPClient对象,可进行文件上传下载

    put(localpath, remotepath, callback=None, confirm=True) 
    将本地文件上传到服务器
    get(remotepath, localpath, callback=None) 
    从服务器下载文件到本地
    mkdir() 
    在服务器上创建目录
    remove() 
    在服务器上删除目录
    rename() 
    在服务器上重命名目录
    stat() 
    查看服务器文件状态
    listdir() 
    列出服务器目录下的文件
    
  • client.close()

  • 执行多条命令

    client.connect(HOST, username=USER, password=PASSWORD)
    channel = client.invoke_shell()
    stdin = channel.makefile(‘wb’)
    stdout = channel.makefile(‘rb’)
    stdin.write('''
    	cd tmp
    	ls
    	exit
    ''')
    print stdout.read()
    
    stdout.close()
    stdin.close()
    client.close()
    

原文地址:https://www.cnblogs.com/yangjunh/p/python_paramiko.html

推荐阅读