堡垒机初识--paramiko模块
2018-06-17 23:26:23来源:未知 阅读 ()
一、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()
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:python 索引
- Redis初识01 (简介、安装、使用) 2019-07-24
- 【第二篇】python初识 2019-07-24
- day 35 补充 2019-05-22
- day24 01 初识继承 2019-05-22
- day23 01 类的命名空间 2019-05-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash