Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作

1、SSHClient:用于连接远程服务器并执行基本命令(Linux)
  (1) 基于用户名密码连接:

 1 import paramiko
 2
 3 # 创建SSH对象
 4 ssh = paramiko.SSHClient()
 5 # 允许连接不在know_hosts文件中的主机
 6 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 7 # 连接服务器
 8 ssh.connect(hostname='c1.salt.com', port=22, username='wupeiqi', password='123')
 9
10 # 执行命令
11 stdin, stdout, stderr = ssh.exec_command('df')
12 # 获取命令结果
13 res,err = stdout.read(),stderr.read()
14 result = res if res else err
15
16 # 关闭连接
17 ssh.close()

View Code

 1 import paramiko
 2
 3 transport = paramiko.Transport(('hostname', 22))
 4 transport.connect(username='wupeiqi', password='123')
 5
 6 ssh = paramiko.SSHClient()
 7 ssh._transport = transport
 8
 9 stdin, stdout, stderr = ssh.exec_command('df')
10 print stdout.read()
11
12 transport.close()

SSHClient 封装 Transport

  (2) 基于公钥密钥连接:

 1 import paramiko
 2
 3 private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
 4
 5 # 创建SSH对象
 6 ssh = paramiko.SSHClient()
 7 # 允许连接不在know_hosts文件中的主机
 8 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 9 # 连接服务器
10 ssh.connect(hostname='c1.salt.com', port=22, username='wupeiqi', key=private_key)
11
12 # 执行命令
13 stdin, stdout, stderr = ssh.exec_command('df')
14 # 获取命令结果
15 result = stdout.read()
16
17 # 关闭连接
18 ssh.close()

View Code

 1 import paramiko
 2
 3 private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
 4
 5 transport = paramiko.Transport(('hostname', 22))
 6 transport.connect(username='wupeiqi', pkey=private_key)
 7
 8 ssh = paramiko.SSHClient()
 9 ssh._transport = transport
10
11 stdin, stdout, stderr = ssh.exec_command('df')
12
13 transport.close()

SSHClient 封装 Transport

 1 import paramiko
 2 from io import StringIO
 3
 4 key_str = """-----BEGIN RSA PRIVATE KEY-----
 5 MIIEpQIBAAKCAQEAq7gLsqYArAFco02/55IgNg0r7NXOtEM3qXpb/dabJ5Uyky/8
 6 NEHhFiQ7deHIRIuTW5Zb0kD6h6EBbVlUMBmwJrC2oSzySLU1w+ZNfH0PE6W6fans
 7 H80whhuc/YgP+fjiO+VR/gFcqib8Rll5UfYzf5H8uuOnDeIXGCVgyHQSmt8if1+e
 8 7hn1MVO1Lrm9Fco8ABI7dyv8/ZEwoSfh2C9rGYgA58LT1FkBRkOePbHD43xNfAYC
 9 tfLvz6LErMnwdOW4sNMEWWAWv1fsTB35PAm5CazfKzmam9n5IQXhmUNcNvmaZtvP
10 c4f4g59mdsaWNtNaY96UjOfx83Om86gmdkKcnwIDAQABAoIBAQCnDBGFJuv8aA7A
11 ZkBLe+GN815JtOyye7lIS1n2I7En3oImoUWNaJEYwwJ8+LmjxMwDCtAkR0XwbvY+
12 c+nsKPEtkjb3sAu6I148RmwWsGncSRqUaJrljOypaW9dS+GO4Ujjz3/lw1lrxSUh
13 IqVc0E7kyRW8kP3QCaNBwArYteHreZFFp6XmtKMtXaEA3saJYILxaaXlYkoRi4k8
14 S2/K8aw3ZMR4tDCOfB4o47JaeiA/e185RK3A+mLn9xTDhTdZqTQpv17/YRPcgmwz
15 zu30fhVXQT/SuI0sO+bzCO4YGoEwoBX718AWhdLJFoFq1B7k2ZEzXTAtjEXQEWm6
16 01ndU/jhAasdfasdasdfasdfa3eraszxqwefasdfadasdffsFIfAsjQb4HdkmHuC
17 OeJrJOd+CYvdEeqJJNnF6AbHyYHIECkj0Qq1kEfLOEsqzd5nDbtkKBte6M1trbjl
18 HtJ2Yb8w6o/q/6Sbj7wf/cW3LIYEdeVCjScozVcQ9R83ea05J+QOAr4nAoGBAMaq
19 UzLJfLNWZ5Qosmir2oHStFlZpxspax/ln7DlWLW4wPB4YJalSVovF2Buo8hr8X65
20 lnPiE41M+G0Z7icEXiFyDBFDCtzx0x/RmaBokLathrFtI81UCx4gQPLaSVNMlvQA
21 539GsubSrO4LpHRNGg/weZ6EqQOXvHvkUkm2bDDJAoGATytFNxen6GtC0ZT3SRQM
22 WYfasdf3xbtuykmnluiofasd2sfmjnljkt7khghmghdasSDFGQfgaFoKfaawoYeH
23 C2XasVUsVviBn8kPSLSVBPX4JUfQmA6h8HsajeVahxN1U9e0nYJ0sYDQFUMTS2t8
24 RT57+WK/0ONwTWHdu+KnaJECgYEAid/ta8LQC3p82iNAZkpWlGDSD2yb/8rH8NQg
25 9tjEryFwrbMtfX9qn+8srx06B796U3OjifstjJQNmVI0qNlsJpQK8fPwVxRxbJS/
26 pMbNICrf3sUa4sZgDOFfkeuSlgACh4cVIozDXlR59Z8Y3CoiW0uObEgvMDIfenAj
27 98pl3ZkCgYEAj/UCSni0dwX4pnKNPm6LUgiS7QvIgM3H9piyt8aipQuzBi5LUKWw
28 DlQC4Zb73nHgdREtQYYXTu7p27Bl0Gizz1sW2eSgxFU8eTh+ucfVwOXKAXKU5SeI
29 +MbuBfUYQ4if2N/BXn47+/ecf3A4KgB37Le5SbLDddwCNxGlBzbpBa0=
30 -----END RSA PRIVATE KEY-----"""
31
32 private_key = paramiko.RSAKey(file_obj=StringIO(key_str))
33 transport = paramiko.Transport(('10.0.1.40', 22))
34 transport.connect(username='wupeiqi', pkey=private_key)
35
36 ssh = paramiko.SSHClient()
37 ssh._transport = transport
38
39 stdin, stdout, stderr = ssh.exec_command('df')
40 result = stdout.read()
41
42 transport.close()
43
44 print(result)

基于私钥字符串进行连接

2、SFTPClient:用于连接远程服务器并执行上传下载(Linux)
  (1) 基于用户名密码上传下载:

 1 import paramiko
 2
 3 transport = paramiko.Transport(('hostname',22))
 4 transport.connect(username='wupeiqi',password='123')
 5
 6 sftp = paramiko.SFTPClient.from_transport(transport)
 7 # 将location.py 上传至服务器 /tmp/test.py
 8 sftp.put('/tmp/location.py', '/tmp/test.py')
 9 # 将remove_path 下载到本地 local_path
10 sftp.get('remove_path', 'local_path')
11
12 transport.close()

View Code

  (2) 基于公钥密钥上传下载

 1 import paramiko
 2
 3 private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
 4
 5 transport = paramiko.Transport(('hostname', 22))
 6 transport.connect(username='wupeiqi', pkey=private_key )
 7
 8 sftp = paramiko.SFTPClient.from_transport(transport)
 9 # 将location.py 上传至服务器 /tmp/test.py
10 sftp.put('/tmp/location.py', '/tmp/test.py')
11 # 将remove_path 下载到本地 local_path
12 sftp.get('remove_path', 'local_path')
13
14 transport.close()

View Code

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 import paramiko
 4 import uuid
 5
 6 class Haproxy(object):
 7
 8 def __init__(self):
 9 self.host = '172.16.103.191'
10 self.port = 22
11 self.username = 'wupeiqi'
12 self.pwd = '123'
13 self.__k = None
14
15 def create_file(self):
16 file_name = str(uuid.uuid4())
17 with open(file_name,'w') as f:
18 f.write('sb')
19 return file_name
20
21 def run(self):
22 self.connect()
23 self.upload()
24 self.rename()
25 self.close()
26
27 def connect(self):
28 transport = paramiko.Transport((self.host,self.port))
29 transport.connect(username=self.username,password=self.pwd)
30 self.__transport = transport
31
32 def close(self):
33
34 self.__transport.close()
35
36 def upload(self):
37 # 连接,上传
38 file_name = self.create_file()
39
40 sftp = paramiko.SFTPClient.from_transport(self.__transport)
41 # 将location.py 上传至服务器 /tmp/test.py
42 sftp.put(file_name, '/home/wupeiqi/tttttttttttt.py')
43
44 def rename(self):
45
46 ssh = paramiko.SSHClient()
47 ssh._transport = self.__transport
48 # 执行命令
49 stdin, stdout, stderr = ssh.exec_command('mv /home/wupeiqi/tttttttttttt.py /home/wupeiqi/ooooooooo.py')
50 # 获取命令结果
51 result = stdout.read()
52
53
54 ha = Haproxy()
55 ha.run()

demo

转载于:https://www.cnblogs.com/zjtong/p/8021944.html

Paramiko模块(堡垒机)相关推荐

  1. paramiko模块堡垒机

    本节内容 paramiko模块 paramiko模块之SSHClient paramiko模块之SFTPClient paramiko模块之封装多个远程操作 堡垒机 1.实现思路 2.表结构 3.实现 ...

  2. 使用python 的paramiko制作堡垒机

    堡垒机-readme: (数据库为mysql) 1.如果数据库不存在,就创建数据库,对数据库的用户授权,创建表结构,和初始化一些数据 2.如果数据库存在,就跳到下一步 3.用户登录堡垒机进行验证 4. ...

  3. Python3之paramiko模块

    Python3之paramiko模块 转载☞:https://www.cnblogs.com/meng-wei-zhi/p/8258674.html 参考☞:https://www.cnblogs.c ...

  4. python paramiko_Python3之paramiko模块

    一. 简介 paramiko是一个基于SSH用于连接远程服务器并执行相关操作(SSHClient和SFTPClinet,即一个是远程连接,一个是上传下载服务),使用该模块可以对远程服务器进行命令或文件 ...

  5. 手动部署jumpserver堡垒机(完整过程+常见错误)

    目录 一.网站架构为什么需要跳板机,堡垒机 二.跳板机和堡垒机概念 跳板机: 堡垒机: 堡垒机的作用: 堡垒机模块 堡垒机的功能 jumperserver官网 三.jumpserver服务器部署 1. ...

  6. 堡垒机前戏:paramiko模块

    一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作. paramiko模块 存在的作用:作批量管理用的. 二.SSHClien ...

  7. paramiko模块实现堡垒机的思路

    1.Paramiko模块下的demo.py程序 修改后的demo.py源代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...

  8. python连接linux堡垒机_利用Python Paramiko开发linux堡垒机

    1.Paramiko模块下的demo.py程序 前面利用Python中的Paramiko模块可以进行SSH的连接,以及用来传送文件(SFTP),但是无论是哪一种方式,连接都是短暂的,并非是长连的,即一 ...

  9. 【python】-- paramiko、跳板机(堡垒机)

    paramiko Python的paramiko模块,该模块用于连接远程服务器并执行相关命令,常用于作批量管理使用 一.下载: pip3 install paramiko 源码:查看 二.parami ...

最新文章

  1. 软件工具将GPU代码迁移到fpga以用于AI应用
  2. java 中的printStackTrace()方法
  3. csharp: ODP.NET,System.Data.OracleClient(.net 4.0) and System.Data.OleDb读取Oracle g 11.2.0的区别...
  4. 【C++grammar】断言与表达式常量
  5. 区块链浏览器_如何用区块链浏览器实现链上数据追踪?
  6. h5打开app_移动端产品比较分析:APP、小程序、H5
  7. 中国水培营养素行业市场供需与战略研究报告
  8. Deploy Oracle 10.2.0.5 on Red Hat Enterprise Linux 6.4
  9. Hbase table DDL操作及scala API操作
  10. Linux 环境下Fortran程序连接使用Intel MKLPardiso解对称稀疏矩阵
  11. Ubuntu 18.04配置 apache https 访问
  12. Valid Palindrome LeetCode Java
  13. springboot web项目_SpringBoot 源码解析 (一):SpringBoot核心原理入门
  14. .net from 关闭事件_libVLC 事件机制
  15. 实训PHP的目的,大学生实习目的及意义
  16. Ajax技术体系的组成部分
  17. 想法随笔——知乎段子
  18. An Apple a day keeps the doctor away
  19. Springboot顺利达驾校预约管理系统毕业设计-附源码191748
  20. 点心云pcdn跑量越来越少问题解决方案

热门文章

  1. 针对巴基斯坦的某APT活动事件分析
  2. 《人工智能:计算Agent基础》——1.5 复杂性维度
  3. [C/C++] String Reverse 字符串 反转
  4. 纯java生成验证码 java生成图片并保存
  5. pip安装Flask失败
  6. jsf标签,jsp标签与jstl标签
  7. 数据库设计三大范式详解
  8. 蓝桥杯 ALGO-159 算法训练 P0103
  9. 蓝桥杯 ALGO-34算法训练 纪念品分组(贪心算法+排序)
  10. 怎么看电脑有没有蓝牙_怎么选购电脑音响?挑选到性价比高的电脑桌面音箱,看完这篇推荐指南就懂了!...