python网络编程-paramiko
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的更多相关文章
- python网络编程-paramiko模块
paramiko模块 该模块基于SSH用于连接远程服务器并执行相关操作 参考文档 SSHClient 用于连接远程服务器并执行命令 import paramiko #创建SSH对象 ssh = par ...
- Python 网络编程(二)
Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...
- Python 网络编程(一)
Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- Python学习(22)python网络编程
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
- Day07 - Python 网络编程 Socket
1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...
- python网络编程-01
python网络编程 1.socket模块介绍 ①在网络编程中的一个基本组件就是套接字(socket),socket是两个程序之间的“信息通道”. ②套接字包括两个部分:服务器套接字.客户机套接字 ③ ...
- 《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档
Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...
- Python网络编程基础pdf
Python网络编程基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VGwGtMSZbE0bSZe-MBl6qA 提取码:mert 复制这段内容后打开百度网盘手 ...
- python 网络编程(Socket)
# from wsgiref.simple_server import make_server## def RunServer(environ,start_response):# start_resp ...
随机推荐
- BZOJ2437 [Noi2011]兔兔与蛋蛋 【博弈论 + 二分图匹配】
题目链接 BZOJ2437 题解 和JSOI2014很像 只不过这题动态删点 如果我们把空位置看做\(X\)的话,就会发现我们走的路径是一个\(OX\)交错的路径 然后将图二分染色,当前点必胜,当且仅 ...
- 毕业设计预习:VHDL入门知识学习(一) VHDL程序基本结构
VHDL入门知识学习(一) VHDL程序基本结构 简介 VHDL程序基本结构 简介 概念: HDL-Hardware Description Language-硬件描述语言-描述硬件电路的功能.信号连 ...
- 单点登录(十)-----遇到问题-----cas启用mongodb验证方式报错com.mongodb.CommandFailureException---Authentication failed
cas启用mongodb验证方式报错com.mongodb.CommandFailureException---Authentication failed. 完整报错信息: 二月 08, 2017 5 ...
- MVC中使用RadioButtonFor
http://shw3588.blog.163.com/blog/static/6507576201321395845538/ 1 进行初始化 <%=Html.RadioButtonFor(mo ...
- C#实现执行数据库事务案例
我是实际项目来拆出来做的案例,场景是比如我们在做电商网站时,在创建订单时的一系列操作,通常在创建订单时我们需要数据表的操作有:订单的表头(主表).订单的详细.清空购物车.甚至是修改优惠劵的状态(在使用 ...
- android中service启动后台程序
Service是Android中一个类,它是Android四大组件之一,使用Service可以在后台执行长时间的操作( perform long-running operations in the b ...
- 转:iOS绘制一个UIView
绘制一个UIView 绘制一个UIVIew最灵活的方式就是由它自己完成绘制.实际上你不是绘制一个UIView,你只是子类化了UIView并赋予子类绘制自己的能力.当一个UIVIew需要执行绘图操作的时 ...
- python---重点(设计模式)
前戏:设计模式简介 设计模式是面向对象设计的解决方案,是复用性程序设计的经验总结.(与语言无关,任何语言都可以实现设计模式) 设计模式根据使用目的的不同而分为创建型模式(Creational Patt ...
- Linux系统中连接使用NAS
在使用NAS时,需要先确定NAS上的NFS服务和SMB的服务都开启了: 然后需要用NAS上的用户去登录,这里用的是admin: # smbclient -L 192.168.1.40 -U admin ...
- 【简记】前端对接WebSocket与心跳重连
前言 最近又在忙着开发别的模块,其中包含了即时通讯这一块,上一次做即时通讯时还是去年年底,一时间代码都在自己的笔记本里,还没带--这里就记录一下前端对接WebSocket的实现,包含心跳重连,简记之. ...