一、堡垒机前戏

开发堡垒机之前,先来学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作

模块安装

C:\Program Files\Python 3.5\Scripts>pip3.5.exe install paramiko
如果报错pip install --upgrade pip 更新下pip继续上步安装就哦了

ssh客户端

创建用于连接远程服务器的客户端并执行基本命令

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-Lian import paramiko # 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname="192.168.20.219",port=22,username="root",password="zyw@123") # 执行命令
stdin,stdout,stderr = ssh.exec_command("df")
# 获取命令结果
result = stdout.read()
# 打印输出
print(result.decode()) # 关闭连接
ssh.close() # 程序输出
# Filesystem 1K-blocks Used Available Use% Mounted on
# /dev/mapper/VolGroup-lv_root
# 48966472 2169976 44302444 5% /
# tmpfs 502176 0 502176 0% /dev/shm
# /dev/sda1 487652 28375 433677 7% /boot

sshclient

基于公钥密钥连接

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-Lian import paramiko private_key = paramiko.RSAKey.from_private_key_file('id_rsa')
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname="192.168.20.219",port=22,username="root",pkey=private_key) # 执行命令
stdin,stdout,stderr = ssh.exec_command("df")
# 获取命令结果
result = stdout.read()
# 打印输出
print(result.decode()) ssh.close() # 程序输出
# Filesystem 1K-blocks Used Available Use% Mounted on
# /dev/mapper/VolGroup-lv_root
# 48966472 2169976 44302444 5% /
# tmpfs 502176 0 502176 0% /dev/shm
# /dev/sda1 487652 28375 433677 7% /boot

sshclient-rsa

sftp客户端

创建用于连接远程服务器的客户端并并进行上传、下载

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-Lian import paramiko transport = paramiko.Transport(("192.168.20.219",22))
transport.connect(username="root",password="zyw@123") sftp = paramiko.SFTPClient.from_transport(transport)
# 上传文件
sftp.put("location.py","/tmp/test.py")
# 下载文件
sftp.get("location.py","/tmp/test.py") transport.close()

sftpclient

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-Lian import paramiko private_key = paramiko.RSAKey.from_private_key_file("id_rsa")
transport = paramiko.Transport(("192.168.20.219",22))
transport.connect(username="root",pkey=private_key) sftp = paramiko.SFTPClient.from_transport(transport)
# 上传文件
sftp.put("location.py","/tmp/test.py")
# 下载文件
#sftp.get("location.py","/tmp/test.py") transport.close()

sftpclient-rsa

创建密钥

[root@bogon tmp]# ssh-keygen -t rsa        

上面的命令在服务端linux上执行的,用root登录的,会在/root/.ssh/目录下生产id.rsa(私钥)、id.rsa.pub(公钥)。把id.rsa拷贝到客户端(本次测试的是windows),id.rsa.pub改名为authorized_keys依然放到目录/root/.ssh/目录下

私钥放到客户端,公钥放到要免密码登录的服务器上,多台就放置到多台上!!!这个我之前竟然忘了啊啊啊啊啊啊!!!

Python开发【第九章】:堡垒机实例的更多相关文章

  1. Python之路:堡垒机实例

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

  2. Python之路:堡垒机实例以及数据库操作

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

  3. Python之路【第八篇】:堡垒机实例以及数据库操作

    Python之路[第八篇]:堡垒机实例以及数据库操作   堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient ...

  4. Python自动化开发 - 堡垒机实例

    本节内容 一.堡垒机介绍 1. SSHClient 2. SFTPClient 3. Transport 二.堡垒机实现 一.堡垒机介绍 1. SSHClient 用户连接远程服务器并执行基本命令 1 ...

  5. Python之路第一课Day9--随堂笔记之一(堡垒机实例以及数据库操作)未完待续....

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

  6. Python 13 简单项目-堡垒机

    本节内容 项目实战:运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功 ...

  7. python 教程 第九章、 类与面向对象

    第九章. 类与面向对象 1)    类 基本类/超类/父类被导出类或子类继承. Inheritance继承 Inheritance is based on attribute lookup in Py ...

  8. day28 CRM万能权限组件开发 && 主机管理-堡垒机

    1,CRM项目实战-万能权限组件开发参考博客:http://www.cnblogs.com/alex3714/articles/6661911.html 参考代码:https://github.com ...

  9. Python之路,Day13 - 堡垒机

    项目实战:运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒 ...

随机推荐

  1. SVM实现邮件分类

    首先学习一下svm分类的使用. 主要有以下步骤: Loading and Visualizing Dataj Training Linear SVM Implementing Gaussian Ker ...

  2. Mybatis 复习 Mybatis 配置 Mybatis项目结构

    pom.xml文件已经贴在了文末.该项目不使用mybatis的mybatis-generator-core,而是手写Entities类,DaoImpl类,CoreMapper类 其中,Entities ...

  3. Git版本控制管理学习笔记1-介绍

    几乎所有的版本控制工具都是出于同样的目的:开发以及维护开发出来的代码,方便读取代码的历史,记录所有的修改.这里,介绍的是当前在开源社区内非常流行的版本控制工具Git.它是由Linus Torvalds ...

  4. 第二十七篇:SOUI中控件属性查询方法

    SOUI项目的SVN根目录下有一个doc目录,下面有一份控件属性表.包含了大部分控件的大部分属性,不过也不一定完全准确.最保险的办法还是查源代码. SOUI对象包含控件及ISkinObj等从SObje ...

  5. selenium实战-Compound class names not permitted

    这个复合类其实就是嵌套类,使用最后一个作为类名即可

  6. Linux第02天

    Linux 第02天 1.Linux磁盘和文件系统 VFS————虚拟文件系统 df命令————查看已挂载的分区 df 分区名 du命令————查看文件夹大小 du 文件夹名 ln命令————符号链接 ...

  7. HDU5730 Shell Necklace(DP + CDQ分治 + FFT)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5730 Description Perhaps the sea‘s definition of ...

  8. Qt里的slot

    昨天出了一个小bug, 一直调都没调出来, 今天仔细看了下, 发现出错的原因了. 我在用osgEarth的时候, 用到一个类MapCatalogWidget, 觉得它不够用, 就把这个类给改了下, 添 ...

  9. 25 Killer Actions to Boost Your Self-Confidence

    25 Killer Actions to Boost Your Self-Confidence Once we believe in ourselves, we can risk curiosity, ...

  10. View基础知识

    一.View基础知识 View 是Android中所有控件的基类,是一种界面层的控件的一种抽象,代表了一个控件 1.View的位置参数 View的四个属性:top(左上角纵坐标)     left(左 ...