Python开发【模块】:paramiko
一、堡垒机前戏
开发堡垒机之前,先来学习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开发【模块】:paramiko的更多相关文章
- python开发模块基础:collections模块¶miko模块
一,collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdic ...
- python开发模块基础:re正则
一,re模块的用法 #findall #直接返回一个列表 #正常的正则表达式 #但是只会把分组里的显示出来#search #返回一个对象 .group()#match #返回一个对象 .group() ...
- python开发模块基础:异常处理&hashlib&logging&configparser
一,异常处理 # 异常处理代码 try: f = open('file', 'w') except ValueError: print('请输入一个数字') except Exception as e ...
- python开发模块基础:os&sys
一,os模块 os模块是与操作系统交互的一个接口 #!/usr/bin/env python #_*_coding:utf-8_*_ ''' os.walk() 显示目录下所有文件和子目录以元祖的形式 ...
- python开发模块基础:序列化模块json,pickle,shelve
一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文 ...
- python开发模块基础:time&random
一,time模块 和时间有关系的我们就要用到时间模块.在使用模块之前,应该首先导入这个模块 常用方法1.(线程)推迟指定的时间运行.单位为秒. time.sleep(1) #括号内为整数 2.获取当前 ...
- python开发模块基础:正则表达式
一,正则表达式 1.字符组:[0-9][a-z][A-Z] 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示字符分为很多类,比如数字.字母.标点等等.假如你现在要求一个位置&q ...
- Python开发系列
一 Python基础理论 Python简介 数据类型 字符编码与文件操作 函数 模块与包 常用模块 面向对象 网络编程 相关代码示例参考 https://github.com/Jonathan131 ...
- Python开发——目录
Python基础 Python开发——解释器安装 Python开发——基础 Python开发——变量 Python开发——[选择]语句 Python开发——[循环]语句 Python开发——数据类型[ ...
- Python开发【第六篇】:模块
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
随机推荐
- 查看linux系统版本相关信息
1.查看内核版本:cat /proc/version A机器 root@debian:~# cat /proc/version Linux version -- (ty@debian) ( (Debi ...
- 2018-2019-2 网络对抗技术 20165202 Exp7 网络欺诈防范
博客目录 一.实践目标 二.实践内容 简单应用SET工具建立冒名网站 (1分) ettercap DNS spoof (1分) 结合应用两种技术,用DNS spoof引导特定访问到冒名网站.(1.5分 ...
- jQuery插件fontIconPicker配合FontAwesome字体图标库的使用
同样先上效果图: 怎么样,是不是很好看,jquery fontIconPicker这个插件做的很不错,支持分类,搜索,还有分页功能,可以自定义分页,具体的使用方法我就不一介绍了,我只说一下如何使用fo ...
- ArcGIS 10.5 tensorflow安装日记
ArcGIS 10.5 tensorflow安装日记 商务科技合作:向日葵,135-4855__4328,xiexiaokui#qq.com Datetime: 2019年5月27日星期一 Os: w ...
- matlab将多张图片合成视频
文件夹内多张图合成为视频: route='D:\文件及下载相关\桌面\**\Matlab_code\result';%基本路径 %d=dir([route '\*.bmp']);%.jpg格式 Wri ...
- PorterDuffXfermode之Mode.SRC_IN
package com.loaderman.customviewdemo.view; import android.content.Context; import android.graphics.B ...
- (八)UML之状态图
一.概念 状态图(Statechart Diagram)主要用于描述一个对象在其生存期间的动态行为,表现为一个对象所经历的状态序列,引起状态转移的事件(Event),以及因状态转移而伴随的动作(Act ...
- UIFontDownLoad ----动态下载系统提供的字体
程序运行结果如下 : 当点击对应单元格实现下载对应的字体. 控制台打印结果如下 : 2015-10-05 11:14:04.132 UIFontDownLoad[12721:86827] state ...
- Mysql安装、查看密码、修改密码、初始化、修改字符类型
安装mysql 参照python篇一键安装lnmp.安装完之后再按照下面修改密码,修改配置文件,否则安装的时候就修改配置文件会出错. 注意:这也是二进制安装mysql.另一种二进制安装容易出错,生产环 ...
- Java不写文件,LOAD DATA LOCAL INFILE大批量导入数据到MySQL的实现(转)
MySQL使用load data local infile 从文件中导入数据比insert语句要快,MySQL文档上说要快20倍左右.但是这个方法有个缺点,就是导入数据之前,必须要有文件,也就是说从文 ...