python基础学习日志day8-paramiko

一:简介

  Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作

  现有这样的需求:需要使用windows客户端,远程连接到Linux服务器,查看上面的日志状态,大家通常使用的方法会是:

  1:用telnet

  2:用PUTTY

  3:用WinSCP

  4:用XManager等…

  那现在如果需求又增加一条,要从服务器上下载文件,该怎么办?那常用的办法可能会是:

  1:Linux上安装FTP并配置

  2:Linux上安装Sambe并配置…

  大家会发现,常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,

  如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了。

  使用paramiko可以很好的解决以上问题

 

二:paramiko使用

  1)SSHClient于连接远程服务器并执行基本命令

    基于用户名密码连接:

    

# -*- coding:utf-8 -*-
__author__ = 'shisanjun' import paramiko #创建SSH对象
ssh=paramiko.SSHClient()
#允许连接不在know_host文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
#连接服务器
ssh.connect(hostname="192.168.0.131",port=22,username="root",password="redhat")
#执行命令
stdin,stdout,stderr=ssh.exec_command("df -h")
#获取命令结果
result=stdout.read()
print(result.decode())
print(stderr.read().decode())
#关闭连接
ssh.close()

  

  SSHClient封装Transport 

# -*- coding:utf-8 -*-
__author__ = 'shisanjun'
import paramiko
#创建Transport对象
transport=paramiko.Transport(("192.168.0.131",22)) transport.connect(username="root",password="redhat")
#创建SSH对象
ssh=paramiko.SSHClient() ssh._transport=transport
#执行命令
stdin,stdout,stderr=ssh.exec_command("df -h") print(stdout.read().decode())
#关闭连接
transport.close()

  基于公钥密钥连接:

  

# -*- coding:utf-8 -*-
__author__ = 'shisanjun'
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="192.168.0.131",port=22,pkey=private_key)
#执行命令
stdin,stdout,stderr=ssh.exec_command("df -h") print(stdout.read().decode())
#关闭连接
ssh.close()

  

# -*- coding:utf-8 -*-
__author__ = 'shisanjun'
import paramiko private_key=paramiko.RSAKey.from_private_key_file("id_rsa")
transport=paramiko.Transport(("192.168.0.131",22))
transport.connect(username="root",pkey=private_key)
#创建SSH对象
ssh=paramiko.SSHClient()
ssh._transport=transport
#执行命令
stdin,stdout,stderr=ssh.exec_command("df -h") print(stdout.read().decode())
#关闭连接
ssh.close()

SFTPClient

用于连接远程服务器并执行上传下载

  基于用户名密码上传下载

  

# -*- coding:utf-8 -*-
__author__ = 'shisanjun'
import paramiko trasport=paramiko.Transport(("192.168.0.131",22))
trasport.connect(username="root",password="redhat") sftp=paramiko.SFTPClient.from_transport(trasport)
#id_rsa 上传至服务器 /tmp/id_rsa,
sftp.put("id_rsa","/tmp/id_rsa")#远程必须批定文件名,否则报错
#将remove_path 下载到本地 local_path
sftp.get("/tmp/id_rsa","id_rsa1") trasport.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()

python网络编程-paramiko的更多相关文章

  1. python网络编程-paramiko模块

    paramiko模块 该模块基于SSH用于连接远程服务器并执行相关操作 参考文档 SSHClient 用于连接远程服务器并执行命令 import paramiko #创建SSH对象 ssh = par ...

  2. Python 网络编程(二)

    Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...

  3. Python 网络编程(一)

    Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  4. Python学习(22)python网络编程

    Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...

  5. Day07 - Python 网络编程 Socket

    1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...

  6. python网络编程-01

    python网络编程 1.socket模块介绍 ①在网络编程中的一个基本组件就是套接字(socket),socket是两个程序之间的“信息通道”. ②套接字包括两个部分:服务器套接字.客户机套接字 ③ ...

  7. 《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档

    Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...

  8. Python网络编程基础pdf

    Python网络编程基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VGwGtMSZbE0bSZe-MBl6qA 提取码:mert 复制这段内容后打开百度网盘手 ...

  9. python 网络编程(Socket)

    # from wsgiref.simple_server import make_server## def RunServer(environ,start_response):# start_resp ...

随机推荐

  1. BZOJ2142 礼物 【扩展Lucas】

    题目 一年一度的圣诞节快要来到了.每年的圣诞节小E都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小E 心目中的重要性不同,在小E心中分量越重的人,收到的礼物会越多.小E从商店中购买了n件礼物, ...

  2. linux系统之定制rpm包

    FPM打包工具 FPM的作者是jordansissel FPM的github:https://github.com/jordansissel/fpm FPM功能简单说就是将一种类型的包转换成另一种类型 ...

  3. Android 如何从应用返回待机界面(HOME)

    Intent mIntent = new Intent(); mIntent.setAction(Intent.ACTION_MAIN); mIntent.addCategory(Intent.CAT ...

  4. 解题:USACO13FEB Taxi

    题面 因为每次只能载一头牛,所以总路程=每头牛的距离+回头路的最短距离,于是问题变成了如何求回头路的最短距离 我们可以把起点和终点存在两个数组里,然后将两个数组排序后取对应位置相减的绝对值就是每次走回 ...

  5. 【费用流】【网络流24题】【P1251】 餐巾计划问题

    Description 一个餐厅在相继的 \(N\) 天里,每天需用的餐巾数不尽相同.假设第 \(i\) 天需要 \(r_i\)块餐巾.餐厅可以购买新的餐巾,每块餐巾的费用为 \(p\) 分;或者把旧 ...

  6. ECharts.js 简单示例

    ECharts.js学习(一) 简单入门 EChart.js 简单入门 最近有一个统计的项目要做,在前端的数据需要用图表的形式展示.网上搜索了一下,发现有几种统计图库. MSChart   这个是Vi ...

  7. 【Asp.net入门09】第一个ASP.NET 应用程序-处理窗体(1)

    我们创建了一个HTML窗体,可以通过它显示受邀参加晚会的嘉宾,但是,当嘉宾单击Submit RSVP按钮时,同一个页面会反复多次显示.为了解决此问题,需要实现一段代码,用于在将窗体数据发布到服务器时执 ...

  8. linux(ubuntu) 安装 node.js

    其实几个月之前我已经介绍过使用window版的nvm——wnvm了 1.先安装nvm 日常开发安装node通常会用nvm来安装,因为nvm可以帮我们管理好node的版本 我们通过git来把nvm下载到 ...

  9. 个人常用Linux文件操作命令

    本文只记录个人工作中最常用到的命令.   关机和用户 shutdown -h now 关机 reboot 重启 sync 非正常关机前执行,强制将内存缓冲区中的数据立即写入磁盘中 logout 注销 ...

  10. Rolling in the Deep (Learning)

    Rolling in the Deep (Learning) Deep Learning has been getting a lot of press lately, and is one of t ...