paramiko简介:

模拟ssh客户端,使用ssh协议,基于sftp协议等做批量管理。例如处理用ssh登陆一千台机器执行
同一个命令,或下载上传文件等需求

基于用户名密码登录执行命令:

import paramiko

#创建SSH对象
ssh = paramiko.SSHClient()
#允许连接不在know_hosts文件中的主机,自动添加konw_host里面没有的主机
ssh.set_missing_hsot_key_policy(paramiko.AutoAddPolicy())
#连接服务器
ssh.connect(hostname='c1.salt.com',port=22,username='root',password='centos')
#执行命令,标准输入,输出,错误,其中输出和错误只有一个有结果
stdin,stdout,stderr = ssh.exec_command('df')
#获取标准输出的结果
result = stdout.read()
print(result.decode())
#关闭连接
ssh.close()

基于用户名密码登录上传下载文件:

import paramiko
'''
模拟SCP命令传文件
''' transport = paramiko.Transport(("hostname",22))
transport.connect(username='root', password='')
#把transport连接做为参数给SFTPClient
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()

上面的方式,用户名,密码写在列表里,循环连接这样是明文不安全 还有一种方式是用秘钥连接更安全

基于RSA公钥私钥连接执行命令:

import paramiko

private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
#创建SSH对象
ssh = paramiko.SSHClient()
#允许连接不在know_host文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接服务器
ssh.connect(hostname='c1.salt.com',port=22,username='root',pkey=private_key)
#执行命令
stdin, stdout, stderr = ssh.exec_command('df')
result = stdout.read()
print(result.decode())

基于RSA公钥私钥连接上传下载文件:

import paramiko

private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')

transport = paramiko.Transport(('hostname',22))
transport.connect(username='root',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()

注意事项:

错误说明:
not found konw_host文件
如果没有写这句话会报上面的错:ssh.set_missing_hsot_key_policy(paramiko.AutoAddPolicy())
在Linux里,用户家目录里有ls .ssh/know_host 10.0.0.31-->10.0.0.41
私钥 公钥
想连别的机器不用密码,就把公钥给别人放别人的家目录,私钥自己拿着
私钥和公钥成对出现,类似于对暗号的形式
												

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

  1. 堡垒机--paramiko模块

    做堡垒机之前,来了解一下paramiko模块. 实际上底层封装的SSH. SSHclient(1) import paramiko #实例化一个ssh ssh = paramiko.SSHClient ...

  2. python之路 堡垒机paramiko

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

  3. 堡垒机 paramiko 自动登陆代码

    #!/usr/bin/env python # Copyright (C) - Robey Pointer <robeypointer@gmail.com> # # This file i ...

  4. 堡垒机 paramiko代码

    #!/usr/bin/env python # Copyright (C) - Robey Pointer <robeypointer@gmail.com> # # This file i ...

  5. paramiko 堡垒机

    用paramiko写堡垒机 paramiko paramiko模块,基于SSH用于连接远程服务器并执行相关操作. 基本用法 SSHClient 基于用户名密码连接: 基础用法: import para ...

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

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

  7. 利用paramiko模块实现堡垒机+审计功能

    paramiko模块是一个远程连接服务器,全真模拟ssh2协议的python模块,借助paramiko源码包中的demos目录下:demo.py和interactive.py两个模块实现简单的堡垒机+ ...

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

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

  9. paramiko模块实现堡垒机

    通过SSHClient 执行命令 """通过用户名密码验证""" import paramiko # 创建 SSH 对象 ssh = par ...

随机推荐

  1. Zabbix Server端配置文件说明

    zabbix作为运维邻域不可缺少的一员,它的各种文档可是数不胜数啊,但是关于配置文件的解释与说明就有点少.这里列出zabbix配置文件篇之zabbix_server. Zabbix Server端配置 ...

  2. tomcat的catalina.out日志按自定义时间日式进行分割

    使用cronolog对tomcat的日志进行自定义日期格式的切割,方便日志的整理和遇到问题日志的排查! 1.安装cronolog工具1.1 下载 cronolog 地址:网上很多下载地址这里就不在累赘 ...

  3. MyBatis 分页插件 PageHelper 使用

    1.  引入Maven依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu ...

  4. redis 系列9 对象类型(字符串,哈希,列表,集合,有序集合)与数据结构关系

    一.概述 在前面章节中,主要了解了 Redis用到的主要数据结构,包括:简单动态字符串.链表(双端链表).字典.跳跃表. 整数集合.压缩列表(后面再了解).Redis没有直接使用这些数据结构来实现键值 ...

  5. 你的第一个Django程序

    本文使用Pycharm.Django 2.0.9.Python 3.6环境,本文大纲 建立Django项目 建立页面 什么是URLconf和ROOT_URLCONF Django怎么处理URL请求 关 ...

  6. Chapter 5 Blood Type——24

    "She's just a little faint," he reassured the startled nurse. "They're blood typing i ...

  7. Jenkins时间修改为北京时间

    jenkins安装后时间一直是utc时间,不太方便. 系统管理->脚本命令行 运行: System.setProperty('org.apache.commons.jelly.tags.fmt. ...

  8. LEMP平台全编译搭建

    1.安装nginx1.13 1.1解决依赖关系 编译安装nginx需要事先需要安装开发包组"Development Tools"和 "Development Librar ...

  9. 深度学习入门实战(一):像Prisma一样算法生成梵高风格画像

    本文由云+社区发表 作者:董超 导语:现在人工智能是个大热点,而人工智能离不开机器学习,机器学习中深度学习又是比较热门的方向,本系列文章就从实战出发,介绍下如何使用MXnet进行深度学习~ 既然是实战 ...

  10. 流式大数据计算实践(3)----高可用的Hadoop集群

    一.前言 1.上文中我们已经搭建好了Hadoop和Zookeeper的集群,这一文来将Hadoop集群变得高可用 2.由于Hadoop集群是主从节点的模式,如果集群中的namenode主节点挂掉,那么 ...