1.课前准备:

本次学习堡垒机相关知识;之前,需要安装Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作。

前提:

python3.5程序安装到默认路径下并已添加path(如非默认,可根据报错信息自行百度)

步骤:

1:管理员方式打开cmd,切换到python安装路径的Scripts目录下:

2:执行命令:

pip3.5.exe install paramiko

3.安装过程中可能会报错:

执行以下命令更新下pip,然后继续第一步安装就哦了

pip install --upgrade pip

4:验证安装是否成功:打开cmd,进入python模式,输入import paramiko;无报错则代表成功;

2.热身:

SSH客户端:

1)基于用户名密码连接:

import paramiko #导入paramiko模块

#创建SSH对象
ssh = paramiko.SSHClient()
#允许链接不在know_hosts文件的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接服务器
ssh.connect(hostname='192.168.1.1',port=22,username='cc',password='123123')
#执行命令
stdin,stdout,stderr = ssh.exec_command('df')
#获取命令结果
result = stdout.read()
#关闭连接
ssh.close()

2)基于公钥密钥连接:

准备工作:

1.linux下生成公钥密钥

该命令将在/root/.ssh目录下面产生一对密钥id_rsa和公钥id_rsa.pub。(若没有安装ssh,则需要执行yum install openssh-clients)

id_rsa.pub 公钥 ---改名为authorized_keys

ssh-keygen#执行后一路enter即可

2.将密钥copy到win下

代码:

import paramiko

private_key = paramiko.RSAKey.from_private_key_file('id_rsa')  # 这里写密钥在win下的文件路径

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

STFP客户端:

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

1)基于用户名密码上传下载:

import paramiko

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

2)基于公钥密钥下载:

前提步骤同上

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学习笔记-(十三)堡垒机的更多相关文章

  1. python 学习笔记十三 JQuery(进阶篇)

    jQuery 是一个 JavaScript 库. jQuery 极大地简化了 JavaScript 编程. 安装jQuery 有两个版本的 jQuery 可供下载: Production versio ...

  2. python学习笔记十三 JS,Dom(进阶篇)

    JS介绍 JavaScript 是属于网络的脚本语言!JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用:JavaScript 是因特网上最流 ...

  3. python学习笔记(十三)接口开发

    一.开发接口的作用 1.mock接口,模拟一些接口,在别的接口没有开发好的时候,需要开发一些模拟接口进行调试和测试. 2.查看数据,比如,获取所有学员信息的接口,就不需要提供数据库的查看信息. 二.接 ...

  4. python学习笔记(十三): 多线程多进程

    一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...

  5. python学习笔记十三:Flask demo

    一.Flask简介 Flask 是一个 Python 实现的 Web 开发微框架.官网:http://flask.pocoo.org/ 二.Demo 1.代码结构 . ├── blog.py ├── ...

  6. python学习笔记(十三)-python对Excel进行读写修改操作

    日常工作中会遇到Excel的读写问题.我们可以使用xlwt 模块将数据写入Excel表格,使用xlrd 模块从Excel读取数据,使用xlutils模块和xlrd模块结合对Excel数据进行修改.下面 ...

  7. Python学习笔记(十三)

    Python学习笔记(十三): 模块 包 if name == main 软件目录结构规范 作业-ATM+购物商城程序 1. 模块 1. 模块导入方法 import 语句 import module1 ...

  8. python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容

    python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...

  9. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

  10. Go语言学习笔记十三: Map集合

    Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...

随机推荐

  1. HTML基本组成结构与标签的认识

    HTML基本组成结构与标签 其实组成结构用一张图来简单了解下如下 目前一般网站的结构是会如此不是很清晰简单 先来说说header头部 这样是不是更加清楚了 导航栏是引导用户查看网站内容的快捷入口,打个 ...

  2. 利用oneproxy部署mysql数据库的读写分离

    实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验说明:本实验共有4台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 oneproxy-rhel ...

  3. 15、sql语句集,Linux 下PHP查询mysql

    一.mysql 创建数据库 mysql密码,默认没有 如果想更改的话, mysqladmin  -uroot   password  root123 登录   : [root@localhost ro ...

  4. Linux字符串截取命令

    一.简单截取 假设有变量 var=http://www.google.com/test.htm 1. # 号截取,删除左边字符,保留右边字符.echo ${var#*//}其中 var 是变量名,#  ...

  5. Java读带有BOM的UTF-8文件乱码原因及解决方法

    原因: 关于utf-8编码的txt文件,windows以记事本方式保存时会在第一行最开始处自动加入bom格式的相关信息,大概三个字节! 所以java在读取此类文件时第一行时会多出三个不相关的字节,这样 ...

  6. Chrome插件: 网站收藏

      在工作中我们会收藏很多网址.以前一直都是用的chrome里面的收藏夹.后面觉得一点都不方便.看一下Chrome插件开发挺容易入手的所以自己写了一个Chrome插件. 基于:Angularjs + ...

  7. 从一个url输入浏览器到页面渲染出来,这个过程都发生了哪些事情?

    经典问题:在浏览器输入一个url后,会发生什么事情呢? (1)假设是简单的http请求(GET),IPV4,无代理. 浏览器先查看浏览器缓存-系统缓存-路由器缓存,若缓存中有,请略过中间步骤,直接跳到 ...

  8. UVALive - 3942 Remember the Word[树状数组]

    UVALive - 3942 Remember the Word A potentiometer, or potmeter for short, is an electronic device wit ...

  9. 用table做网页,设置了border为1px怎么还是觉得很粗?

    设置边框重叠 border-collapse:collapse;  /*边框重叠*/ 例: <table width="700" style="border-col ...

  10. 通过sqlserver发送邮件

    配置过程请参考:http://www.2cto.com/database/201403/289114.html 实际中应用的扩展: 1.编写一个触发器(相当于一个多线程的发邮件的服务). 2.在应用程 ...