堡垒机初识--paramiko模块
一、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()
输出
- stdin => 标准输入,就是你输入的那个命令
- stdout => 标准输出,你输入命令后执行的结果
- 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模块的更多相关文章
- Pyhton开发堡垒机之paramiko模块
堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: + ...
- python2.0 s12 day8 _ 堡垒机前戏paramiko模块
堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 paramiko模块是做主机管理的,他模拟了一个ssh. 有两种形式连接形式, ...
- 堡垒机之paramiko模块
一.paramiko简单介绍 场景预设: 很多运维人员平时进行维护linux/unix主机时候,无非通过ssh到相应主机操作,那么一旦主机有成千上百台,那该如何应对,这时候我们需要批处理工具,基于py ...
- 堡垒机前戏——paramiko
提要:在写堡垒机之前,我们必须要了解paramiko这个第三方库.有关于python的第三方库的安装很简单,可以自行百度. 该模块基于SSH用于连接远程服务器并执行相关操作. SSHClient 用于 ...
- python-----堡垒机前戏paramiko模块及进阶
堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: i ...
- 堡垒机(paramiko)
实现思路 堡垒机执行流程: 管理员为用户在服务器上创建账号(将公钥放置服务器,或者使用用户名密码) 用户登陆堡垒机,输入堡垒机用户名密码,现实当前用户管理的服务器列表 用户选择服务器,并自动登陆 执行 ...
- python之路 堡垒机paramiko
paramiko 1.安装 pip3 install paramiko 二.使用 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko # 创建S ...
- 基于python的堡垒机
一 堡垒机的架构 堡垒机的核心架构通常如下图所示: 二.堡垒机的一般执行流程 管理员为用户在服务器上创建账号(将公钥放置服务器,或者使用用户名密码) 用户登陆堡垒机,输入堡垒机用户名密码,显示当前用户 ...
- python远程连接paramiko 模块和堡垒机实现
paramiko使用 paramiko模块是基于python实现了SSH2远程安全连接,支持认证和密钥方式,可以实现远程连接.命令执行.文件传输.中间SSH代理功能 安装 pip install pa ...
随机推荐
- B. Counting-out Rhyme(约瑟夫环)
Description n children are standing in a circle and playing the counting-out game. Children are numb ...
- 基于NABCD评论探路者团队贪吃蛇作品及改进建议
1.根据(不限于)NABCD评论作品的选题 N:随着人们生活压力越来越大,需要去去缓解压力,并且也需要不断进步,学习英语知识. A:它是基于java开发的一款软件,采用逐个吃字母,加长蛇身,增强记忆的 ...
- JS 操作 checkbox(cc角色管理等)
1.获取选中的权限的个数 var size=$("input[name='privileges']:checked").size();
- [并查集] More is Better
题目描述 Mr Wang wants some boys to help him with a project. Because the project is rather complex, the ...
- Struts2(三)
以下内容是基于导入struts2-2.3.32.jar包来讲的 1.全局视图配置 xml标签:<global-results> <result name="error&qu ...
- C语言文法推导
- 微信获取 openid 静默及非静默
<?php /* 需要的微信公众号配置信息 APPID : 绑定支付的APPID APPSECRET : 公众帐号secert */ class Index { // 配置账号信息 privat ...
- PHP中普通方法和静态方法
普通方法(实例方法) 一个类中定义的方法,可以为这个类的所有对象调用的方法.也可以理解为,这个类的所有对象,都各自有自己的一个该方法: 定义形式: class 类名{ function 方法名(形 ...
- sublime py不能输入中文
设置环境变量PYTHONIOENCODING=UTF-8,重启sublime即可 转载请注明博客出处:http://www.cnblogs.com/cjh-notes/
- Hibernate学习--hibernate延迟加载原理-动态代理(阿里电面)
在正式说hibernate延迟加载时,先说说一个比较奇怪的现象吧:hibernate中,在many-to-one时,如果我们设置了延迟加载,会发现我们在eclipse的调试框中查看one对应对象时,它 ...