封装带SSH跳板机的redis

一、封装ssh的redis

二、setting的配置

三、应用示例

import redis
from sshtunnel import SSHTunnelForwarder
from conf.setting import REDIS_online, REDIS_dev

class MyRedis():

    def __del__(self):
        self.server.close()    

    def __init__(self,host,ip,ssh_username,ssh_password,db,password):
        #构造shh-redis链接,使用setting配置文件
        try:
            server = SSHTunnelForwarder(
                ssh_address_or_host=(host, 22),
                ssh_username=ssh_username,
                ssh_password=ssh_password,
                remote_bind_address=(ip, 6379)
            )
            self.server = server
            self.server.daemon_forward_servers = True #不加server关闭不了
            self.server.start()
            pool = redis.ConnectionPool(host=‘127.0.0.1‘, port=self.server.local_bind_port, password=password, db=db,
                                        decode_responses=True)
            redis_connect = redis.Redis(connection_pool=pool)
            self.r = redis_connect
        except Exception as e:
            print(‘redis连接失败,错误信息%s‘%e)

    def str_get(self,k):
        res = self.r.get(k)
        return res

    # def str_set(self,k,v,time=None):
    #     self.r.set(k,v,time)

    # def delete(self,k):
    #     tag = self.r.exists(k) #判断这个key是否存在
    #     if tag:
    #         self.r.delete(k)
    #         print(‘删除成功‘)
    #     else:
    #         print(‘这个key不存在‘)
    # def hash_get(self,name,k):
    #     res = self.r.hget(name,k)
    #     if res:
    #         return res.decode()
    # def hash_set(self,name,k,v):
    #     self.r.hset(name,k,v)
    # def hash_getall(self,name):
    #     data = {}
    #     # {b‘12‘: b‘1212‘, b‘3‘: b‘sdad‘, b‘4‘: b‘asdadsa‘}
    #     res = self.r.hgetall(name)
    #     if res:
    #         for k,v in res.items():
    #             k =  k.decode()
    #             v = v.decode()
    #             data[k]=v
    #     return data
    # def hash_del(self,name,k):
    #     res = self.r.hdel(name,k)
    #     if res:
    #         print(‘删除成功‘)
    #         return 1
    #     else:
    #         print(‘删除失败,该key不存在‘)
    #         return 0

    # @property
    # def clean_redis(self):
    #     self.r.flushdb()  #清1空redis
    #     print(‘清空redis成功!‘)
    #     return 0

# my = MyRedis(**REDIS_dev)

# if __name__ == ‘__main__‘:
#     my = MyRedis(**REDIS_online)
#     vcode = my.str_get(‘xxx:vcode:xxx:1xx0000xxxx‘)
#     print(vcode)
1 REDIS_online = {
2     ‘host‘: ‘1xx.xxx.xxx.xxx‘,
3     ‘ip‘ : ‘1xx.xx.xx.xx‘,
4     ‘ssh_username‘ : ‘aaa‘,
5     ‘ssh_password‘: ‘xxx‘,
6     ‘db‘:2,
7     ‘password‘ : ‘vvvv‘
8 }

 1 import unittest,requests
 2 from sshtunnel import SSHTunnelForwarder
 3 from lib.my_redis import MyRedis
 4 # from lib.my_sql import my_sql
 5 from conf.setting import BASE_URL,REDIS_online
 6 from urllib.parse import urljoin
 7 from lib.my_request import MyRequest
 8 from lib.tools import login
 9
10 class Pt_xxx_xxx(unittest.TestCase):
11     def test_c_xxx(self):
12         ‘‘‘xxxxx‘‘‘
13         url = ‘/xxx/xxx/messageCode‘
14         real_url = urljoin(BASE_URL, url)
15
16         data = {‘xx‘: ‘xxx%2C2‘,
17                 ‘xx‘: ‘xxxA‘
18                 }
19         res = MyRequest.get(real_url, data)
20         if res.get(‘msg‘) == ‘发xxxxxx,xxx‘:
21             self.assertEqual(401, res.get(‘code‘), msg = ‘发xxxx==>失败url:%s 失败data:%s‘%(real_url,data) )
22         else:
23             self.assertEqual(200, res.get(‘code‘), msg=‘发xxxx==>失败url:%s 失败data:%s‘%(real_url,data) )
24
25
26     def test_c_xxxx(self):
27         ‘‘‘xxx‘‘‘
28         url = ‘/xx/xxxx/messageCode‘
29         real_url = urljoin(BASE_URL, url)
30         my = MyRedis(**REDIS_online)
31         vcode = my.str_get(‘xx:xx:xxx:1xx000xxx34‘)
32
33         data = {‘xx‘: ‘xx%2C2‘,
34                 ‘xxx‘: 2,
35                 ‘vcode‘: vcode
36                 }
37         res = MyRequest.get(real_url, data)
38         self.assertEqual(200, res.get(‘code‘), msg=‘获取xx败==>失败url:%s 失败data:%s‘ % (real_url, data))
39
40
41 if __name__ == ‘__main__‘:
42     c=xxx()
43     c.test_c_xx()
44     c.test_c_xx()

应用

原文地址:https://www.cnblogs.com/jiadan/p/11996925.html

时间: 2024-11-08 23:07:52

封装带SSH跳板机的redis的相关文章

搭建ssh跳板机

搭建ssh跳板机 环境介绍: [[email protected] ~]# cat /etc/redhat-release  CentOS release 6.6 (Final) [[email protected] ~]# uname -r 2.6.32-504.el6.x86_64 //准备2-3台虚拟机,至少2台. 1.在所有机器上创建跳板机用户 [[email protected] ~]# useradd tb [[email protected] ~]# echo "123.com&q

Jmeter JDBC请求-----数据库读取数据进行参数化 附带 SSH跳板机连接数据库

前期准备: jdbc驱动:mysql-connector-java-5.1.7-bin.jar Jmeter 要链接MySQL数据库,首选需要下载mysql jdbc驱动包(注:驱动包的版本一定要与你数据库的版本匹配,驱动版本低于mysql版本有可能会导致连接失败报错) 第一步: 选择 测试计划-->点击 浏览-->选中mysql驱动jar包-->打开,引入驱动 第二步:新建一个线程组: 第三步:线程组下创建一个JDBC Connection Configuration配置原件: Var

mysql ssh 跳板机(堡垒机???)连接服务器

跳板机(Jump Server),也称堡垒机,是一类可作为跳板批量操作远程设备的网络设备,是系统管理员或运维人员常用的操作平台之一. 正常的登录流程 使用ssh命令登录跳板机: 登录跳板机成功后,在跳板机分配的终端中使用ssh命令再登录开发机,跳板机和开发机之间采用带密码的ssh验证,因此需要输入ssh私钥的密码. ssh隧道(通过跳板机)连接mysql 案例: A服务器   B服务器   C服务器mysql 现在mysql服务器C只能通过内网访问,B服务器就能通过内网连接访问到mysql A服

[转]ssh技巧之跳板机

转,原文:https://segmentfault.com/a/1190000020326898?utm_source=tag-newest ---------------------------------------------------- 在管理外网服务器时,出于安全等因素的考虑,我们一般不会把所有服务器都设置成可ssh直连,而是会从中挑选出一台机器作为跳板机,当我们想要连接外网服务器时,我们要先通过ssh登录到跳板机,再从跳板机登录到目标服务器. 下面我们用实验来展示一下跳板机的登录流

XShell SSH 跳板配置之jmeter连接跳板数据库

一.XShell配置 1)连接-->填写SSH跳板机地址 2)用户身份验证-->跳板机用户名及密码 3)登录脚本-->send 'top'命令(以保持跳板机的session) 4)隧道-->配置映射主机(一般为localhost)及端口号,目标主机地址及端口号 二.jmeter配置 添加-->配置原件-->JDBC Connection Configuration 原文地址:https://www.cnblogs.com/FengZiQ/p/9063005.html

ssh远程登陆脚本(带跳板机)

mac自带的终端不太好用,被推荐了一个iterm2的终端替代工具,确实比自带的终端好用不少.下面记录下通过脚本一键远程登录的过程: 下载地址:http://m4.pc6.com/xuh3/iTerm2.zip 首先,准备好登陆脚本 #!/usr/bin/expect -f set user xxx set host 127.0.0.1 set port 22 #如果是默认端口可以不指定 set password xxx set timeout -1 spawn ssh -p $port [ema

jmeter连接配置带跳板机(SSH)的mysql服务器

jmeter连接配置mysql服务器时,如果数据库服务器没有通过ssh连接,则只需要配置相应的jdbc参数就可以了,即请求域名或ip地址:3306,如果数据库服务器是通过SSH连接的,那需要通过中间远程连接工具来登录,此处使用的远程连接工具为Putty,配置的时候需要将数据库的ssh->tunnel中的请求域名先映射到本地3306的端口(一般mysql的请求端口设置为3306,只是符合大众流~~~),然后通过ssh的服务器ip及端口来访问,具体的配置请参考如下: 1.首先,下载并打开Putty喽

Navicat for Mysql SSH tunnel 用跳板机解决方案

Navicat Mysql SSH tunnel不能使用跳板机,对于需要跳板机登录的主机,他自带的SSH Tunnel就是鸡肋了.其实从原理上分析,根本不需要开启他得SSH Tunnel,使用本机强大SSH端口转发,加上跳板代理,即可完美解决. 1.先取消已经设置的SSH Tunnel,如下图都清空 2.本地配置好跳板机,跳板机文章很多,百度即可.比如我的: 替换Host , User, 123.45.67.89,这些换成你自己对应的参数: vi ~/.ssh/config Host *.myd

【转】SSH穿越跳板机:一条命令跨越跳板机直接登陆远程计算机

转自:http://mingxinglai.com/cn/2015/07/ssh-proxycommand/ 今天在公司搭建跳板机,遇到一个比较麻烦的问题,这里简单记录一下,希望对有相同问题的人有所帮助. 我们公司的线上机器是下图这样的,A是我们本地的计算机,一般是windows系统,B是跳板机,C是目标机器,我们需要登录线上机器时,必须先登录跳板机,再登录目标机器. +-----+ +-----+ +-----+ | | | | | | | A +-----------> | B +-----