一、paramiko模块

  Python的paramiko模块基于SSH用于连接远程服务器并执行相关的操作。

  1.1 在windows上安装paramiko模块

  测试环境: win10 , python3.5 并且已安装 pip

  在命令窗口,切换到 python 安装目录中的 Scripts

  执行: pip install paramiko

  检测: import paramiko

二、SSHClient

  2.1 基于用户名密码连接  

import paramiko

'''
用于连接远程服务器,并执行命令
''' # 创建SSH对象
ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器
ssh.connect(hostname='172.16.200.30', port=22, username='root', password='111111') # 执行命令
stdin, stdout, stderr = ssh.exec_command('ls&&df') # 获取命令结果
# 三元运算
res, err = stdout.read(), stderr.read()
result = res if res else err
print(result.decode()) # 关闭连接
ssh.close()

  输出

   

  1. stdin =>  标准输入,就是你输入的那个命令
  2. stdout => 标准输出,你输入命令后执行的结果
  3. stderr => 标准错误,名利执行的过程中,如果出错了,就把这个错误打到这里

  2.2 基于公钥秘钥连接

其实很上面用密码登入没什么区别,只是不用写明文密码了

import paramiko

private_key = paramiko.RSAKey.from_private_key_file(r'G:\python\untitled\study9\ceshi')

# 创建SSH对象
ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器
ssh.connect(hostname='172.16.200.30', port=22, username='root', pkey=private_key) # 执行命令
stdin, stdout, stderr = ssh.exec_command('ls') # 获取命令结果
# 三元运算
res, err = stdout.read(), stderr.read()
result = res if res else err
print(result.decode()) # 关闭连接
ssh.close()

  输出

004776
1
_1748
anaconda-ks.cfg
monitor
npm-debug.log

  2.3 SSHClietn封装了transport

# -*- coding: UTF-8 -*-

# SSHClient 封装了Transport

import paramiko

transport = paramiko.Transport(('172.16.200.30', 22))
transport.connect(username='root', password='111111') ssh = paramiko.SSHClient()
ssh._transport = transport # 执行命令
stdin, stdout, stderr = ssh.exec_command('df') res, err = stdout.read(), stderr.read()
result = res if res else err
print(result.decode()) transport.close()

  基于秘钥

# SSHClient 封装了Transport

import paramiko

private_key = paramiko.RSAKey.from_private_key_file(r'G:\python\untitled\study9\ceshi')

transport = paramiko.Transport(('172.16.200.30', 22))
transport.connect(username='root', pkey=private_key) ssh = paramiko.SSHClient()
ssh._transport = transport # 执行命令
stdin, stdout, stderr = ssh.exec_command('ds') res, err = stdout.read(), stderr.read()
result = res if res else err
print(result.decode()) transport.close()

  

三、SFTPClient

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

  3.1 基于用户名和密码

import paramiko

transport = paramiko.Transport(('172.16.200.30', 22))
transport.connect(username='root', password='111111') sftp = paramiko.SFTPClient.from_transport(transport) # 将本地文件上传至服务器
sftp.put(r'G:\python\untitled\study9\ceshi', '/tmp/ceshi') # 将远程服务器的文件下载至本地
sftp.get('/tmp/test.txt', r'G:\python\untitled\study9\test_linux.txt') transport.close() #注:
上传和下载的路径必须是全路径,即必须把文件名也加上,不能只写目录名

  3.2 基于公钥和私钥上传和下载

  同样改变不多

import paramiko

# 秘钥
private_key = paramiko.RSAKey.from_private_key_file(r'G:\python\untitled\study9\ceshi') transport = paramiko.Transport(('172.16.200.30', 22))
transport.connect(username='root', pkey=private_key) sftp = paramiko.SFTPClient.from_transport(transport) # 将本地文件上传至服务器
sftp.put(r'G:\python\untitled\study9\ceshi', '/tmp/ceshi') # 将远程服务器的文件下载至本地
sftp.get('/tmp/test.txt', r'G:\python\untitled\study9\test_linux.txt') transport.close()

  

堡垒机初识--paramiko模块的更多相关文章

  1. Pyhton开发堡垒机之paramiko模块

    堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: + ...

  2. python2.0 s12 day8 _ 堡垒机前戏paramiko模块

    堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 paramiko模块是做主机管理的,他模拟了一个ssh. 有两种形式连接形式, ...

  3. 堡垒机之paramiko模块

    一.paramiko简单介绍 场景预设: 很多运维人员平时进行维护linux/unix主机时候,无非通过ssh到相应主机操作,那么一旦主机有成千上百台,那该如何应对,这时候我们需要批处理工具,基于py ...

  4. 堡垒机前戏——paramiko

    提要:在写堡垒机之前,我们必须要了解paramiko这个第三方库.有关于python的第三方库的安装很简单,可以自行百度. 该模块基于SSH用于连接远程服务器并执行相关操作. SSHClient 用于 ...

  5. python-----堡垒机前戏paramiko模块及进阶

    堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: i ...

  6. 堡垒机(paramiko)

    实现思路 堡垒机执行流程: 管理员为用户在服务器上创建账号(将公钥放置服务器,或者使用用户名密码) 用户登陆堡垒机,输入堡垒机用户名密码,现实当前用户管理的服务器列表 用户选择服务器,并自动登陆 执行 ...

  7. python之路 堡垒机paramiko

    paramiko 1.安装 pip3 install paramiko 二.使用 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko # 创建S ...

  8. 基于python的堡垒机

    一 堡垒机的架构 堡垒机的核心架构通常如下图所示: 二.堡垒机的一般执行流程 管理员为用户在服务器上创建账号(将公钥放置服务器,或者使用用户名密码) 用户登陆堡垒机,输入堡垒机用户名密码,显示当前用户 ...

  9. python远程连接paramiko 模块和堡垒机实现

    paramiko使用 paramiko模块是基于python实现了SSH2远程安全连接,支持认证和密钥方式,可以实现远程连接.命令执行.文件传输.中间SSH代理功能 安装 pip install pa ...

随机推荐

  1. 团队介绍&学长采访

    1. 团队介绍 刘畅 博客园ID:森高Slontia 身份:PM 个人介绍: 弹丸粉 || 小说创作爱好者 || 撸猫狂魔 我绝对不知道,我一个写代码的怎么就当PM去了? 张安澜 博客园ID:Mins ...

  2. 王者荣耀交流协会-Alpha发布用户使用报告

    用户数量:10人 姓名如下(包括化名):张小斌.王瑞瑞.蛋蛋.小美.晨曦.小丽.张利刚.小闫.小谢.小崔 寻找的用户多为王者荣耀交流协会成员的同学,对管理时间有着强烈的需求,也对PSP Daily软件 ...

  3. 作业MathExamV2.0

    MathExam233 211614269 林凯 211601233张康凌 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时( ...

  4. c# 读取blob数据

    Stream stream = new MemoryStream(data); BinaryReader r = new BinaryReader(stream); int iRawImageWidt ...

  5. C++中使用内存映射文件处理大文件

    引言 文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile().WriteFile().ReadFile() ...

  6. Scrum 项目 5.0

    5.0--------------------------------------------------- 1.团队成员完成自己认领的任务. 2.燃尽图:理解.设计并画出本次Sprint的燃尽图的理 ...

  7. 个人项目----词频统计WEB(部分功能)

    需求分析 1.使用web上传txt文件,对上传的txt进行词频统计. 2.将统计后的结果输出到web页面,力求界面优美. 3.在界面上展示所给url的文章词频统计,力求界面优美. 3.将每个单词同四. ...

  8. React Native 学习-组件说明和生命周期

    组件的详细说明(Component Specifications) 当通过调用 React.createClass() 来创建组件的时候,你应该提供一个包含 render 方法的对象,并且也可以包含其 ...

  9. 移植spdylay到libcurl

    Libcurl是第三方网络库,支持各种网络协议 SPDY是Google提出的用来替代HTTP1.1的网络协议, 目前google.com, facebook.com, twitter.com服务器端都 ...

  10. 关于SIGPIPE信号

    对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程.具体的分析可以结合TCP的"四次握手"关闭. TCP是全双工的信道, ...