SSH协议的Python实现paramiko
paramiko安装
SSH是一个协议,paramiko 是一个Python 的库,该库支持sshv2协议,实现了对远程服务器执行操作
安装命令:
pip3 install paramiko
SSHClient类与SFTPClient类
paramiko包含两个核心组建,分别是SSHClient和SFTPClient
- SSHClient:类似于Linux下的ssh命令,用于执行远程命令。
- SFTPClient:类似于Linux下的sftp命令,实现远程文件操作
SSHClient类的方法
- connect:实现远程连接认证,只有hostname 是必传参数
connect(self,hostname,port=22,username=None,password=None,
pkey=None,key_filename=None,timeout=None,
allow_agent=True,look_for_keys=True,compress=False)
- set_missing_host_key_poilcy:设置没有做免密的主机应对的策略
- exec_command:在远程服务器上执行命令的方法
- open_sftp:在远程服务器上打开sftp回话
SFTPClient类的方法
- put:上传文件
- get:下载文件
- mkdir:创建目录
- remove:移除文件
- rmdir:删除目录
- rename:重命名文件/目录
- stat:查看文件详细信息
- listdir:列出指定目录下的文件内容
paramiko的基本使用
paramiko.SSHClient两种认证方式
在执行远程服务器操作之前,首先需要连接远程服务器并进行认证。
paramiko 与 ssh命令一样,支持密码认证和秘钥认证两种方式
使用密码认证
import paramiko
ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456"
# 使用密码认证
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
ssh.connect(ip,port,user,pwd)
使用秘钥认证
import paramiko
ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456"
# 使用密钥认证
ssh = paramiko.SSHClient()
ssh.connect(ip,port,user,key_filename="私钥文件")
使用方法
远程执行命令
import paramiko
ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456"
### 远程执行命令
ssh = paramiko.SSHClient()
# 自动添加免密
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程主机
ssh.connect(ip,port,user,pwd)
command = input("请输入你要执行的命令").strip()
# 接收输出结果
stdin,stdout,stderr = ssh.exec_command(command)
res = stdout.readlines() + stderr.readlines()
for line in res:
print(line.strip())
ssh.close()
上传文件到远程机器
import paramiko
ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456"
t = paramiko.Transport((ip,port))
t.connect(username=user,password=pwd)
sftp = paramiko.SFTPClient.from_transport(t)
# 上传至远程服务器的目录/文件
remotepath = "/tmp/test1.txt"
# 本地的一个文件
localpath = "/tmp/test.txt"
# 上传
sftp.put(localpath,remotepath)
t.close()
从远程机器下载文件
import paramiko
ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456"
t = paramiko.Transport((ip,port))
t.connect(username=user,password=pwd)
sftp = paramiko.SFTPClient.from_transport(t)
# 上传至远程服务器的目录/文件
remotepath = "/tmp/test1.txt"
# 本地的一个文件
localpath = "/tmp/test.txt"
# 下载
sftp.get(remotepath,localpath)
t.close()
SSH协议的Python实现paramiko的更多相关文章
- 使用python的Paramiko模块登陆SSH
使用python的Paramiko模块登陆SSH paramiko是用Python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. python的paramiko模块 ...
- paramiko:实现ssh协议,对linux服务器资源的访问
介绍 网络传输是遵循协议的,比如SSH,paramiko则是实现了SSHv2协议的一个python库(底层使用的是cryptography).有了paramiko之后,我们便可以通过python使用s ...
- (转)python通过paramiko实现,ssh功能
python通过paramiko实现,ssh功能 1 import paramiko 2 3 ssh =paramiko.SSHClient()#创建一个SSH连接对象 4 ssh.set_missi ...
- Python之paramiko基础
一.Paramiko模块 paramiko是一个自由和开放源码模块使用,实现SSH2协议安全(认证和加密)连接到远程计算机. 二.windwos下安装paramiko模块 #在DOS命令行执行如下命令 ...
- 如何进行服务器的批量管理以及python 的paramiko的模块
最近对公司的通道机账号进行改造管理,全面的更加深入的理解了公司账号管理的架构.(注:基本上所有的机器上的ssh不能使用,只有部分机器能够使用.为了安全的角度考虑,安装的不是公版的ssh,而都是定制版的 ...
- python的paramiko模块
paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Solaris, BSD, MacOS X, ...
- (转)python的paramiko模块
python的paramiko模块 原文:http://www.cnblogs.com/breezey/p/6663546.html paramiko是用python语言写的一个模块,遵循S ...
- Python网络模块Paramiko基本使用
一.Paramiko简介 首先来看谁创造了paramiko,是一个名叫Jeff Forcier创建了paramiko项目.项目主页:http://www.paramiko.org,可以去看上面有很多相 ...
- python 之 paramiko
""" 对app进行一些路由设置 """ """ 对socketio进行一些监听设置 "" ...
随机推荐
- C/C++ Microsoft Visual Studio c++ DOC Home
{ // https://docs.microsoft.com/zh-cn/cpp/overview/visual-cpp-in-visual-studio?view=vs-2017 // https ...
- Html+css3记录
一.html5新特性 常用语义标签:nav footer header section mark 功能标签 video audio iframe canvas(画布和绘图功能) input新ty ...
- (转)iframe 高度100%时,出现垂直滚动条
问题 需求是这样的,iframe在一个div中,并且iframe高度与div一样,所以设置了iframe高度是100%,结果div出现了滚动条,在排除了padding.margin的因素外,还是有滚动 ...
- C#,判断数字集合是否是连续的
/// <summary> /// 判断数字集合是否是连续的 /// </summary> /// <returns></returns> public ...
- quartz的job中注入spring对象!
一般情况下,quartz的job中使用autowired注解注入的对象为空,这时候我们就要使用spring-quartz提供的AdaptableJobFactory类. 自定义一个类: public ...
- dashboard服务
1.上传镜像,并导入,打标签 2.创建dashboard的deployment和service apiVersion: extensions/v1beta1 kind: Deployment meta ...
- Collection单列集合中的常用实现类
Collection 集合层次的根接口 List 有序 有索引 可以重复 ArrayList 底层数据结构是数组 查询快 增删快 线程不安全 效率高 LinkedList 底层数据结构是链表 查询慢 ...
- Java 11 发布计划来了,已确定 3个 新特性!!
Oracle 已经发布了 Java Development Kit 10,下一个版本 JDK 11 也在准备之中了.按照 Java 新的版本发布标准,Java 11 将在 6 个月后到来,现在它还只有 ...
- winform程序捕获全局异常,对错误信息写入日志并弹窗
使用场景:在winform程序中如果没对方法进行try catch操作,若方法内出错,则整个程序报错并退出,如下图 如果程序已在客户手中,若没对错误的详细信息进行拍照,我们则不知道错误原因是什么.我们 ...
- 面试系列15 如何保证Redis的高并发和高可用
就是如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 我这里会选用我之前讲解 ...