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. BZOJ2437 [Noi2011]兔兔与蛋蛋 【博弈论 + 二分图匹配】

    题目链接 BZOJ2437 题解 和JSOI2014很像 只不过这题动态删点 如果我们把空位置看做\(X\)的话,就会发现我们走的路径是一个\(OX\)交错的路径 然后将图二分染色,当前点必胜,当且仅 ...

  2. 毕业设计预习:VHDL入门知识学习(一) VHDL程序基本结构

    VHDL入门知识学习(一) VHDL程序基本结构 简介 VHDL程序基本结构 简介 概念: HDL-Hardware Description Language-硬件描述语言-描述硬件电路的功能.信号连 ...

  3. 单点登录(十)-----遇到问题-----cas启用mongodb验证方式报错com.mongodb.CommandFailureException---Authentication failed

    cas启用mongodb验证方式报错com.mongodb.CommandFailureException---Authentication failed. 完整报错信息: 二月 08, 2017 5 ...

  4. MVC中使用RadioButtonFor

    http://shw3588.blog.163.com/blog/static/6507576201321395845538/ 1 进行初始化 <%=Html.RadioButtonFor(mo ...

  5. C#实现执行数据库事务案例

    我是实际项目来拆出来做的案例,场景是比如我们在做电商网站时,在创建订单时的一系列操作,通常在创建订单时我们需要数据表的操作有:订单的表头(主表).订单的详细.清空购物车.甚至是修改优惠劵的状态(在使用 ...

  6. android中service启动后台程序

    Service是Android中一个类,它是Android四大组件之一,使用Service可以在后台执行长时间的操作( perform long-running operations in the b ...

  7. 转:iOS绘制一个UIView

    绘制一个UIView 绘制一个UIVIew最灵活的方式就是由它自己完成绘制.实际上你不是绘制一个UIView,你只是子类化了UIView并赋予子类绘制自己的能力.当一个UIVIew需要执行绘图操作的时 ...

  8. python---重点(设计模式)

    前戏:设计模式简介 设计模式是面向对象设计的解决方案,是复用性程序设计的经验总结.(与语言无关,任何语言都可以实现设计模式) 设计模式根据使用目的的不同而分为创建型模式(Creational Patt ...

  9. Linux系统中连接使用NAS

    在使用NAS时,需要先确定NAS上的NFS服务和SMB的服务都开启了: 然后需要用NAS上的用户去登录,这里用的是admin: # smbclient -L 192.168.1.40 -U admin ...

  10. 【简记】前端对接WebSocket与心跳重连

    前言 最近又在忙着开发别的模块,其中包含了即时通讯这一块,上一次做即时通讯时还是去年年底,一时间代码都在自己的笔记本里,还没带--这里就记录一下前端对接WebSocket的实现,包含心跳重连,简记之. ...