python SSHTunnelForwarder登录服务器,调用telnet执行命令获取结果(GetTelnetData)。
# coding:utf-8
'''
Note:
通过隧道登录服务器,使用telnet链接redis,获取Rdids中的数据
Author:Qredsun
Date:2019/5/31
'''
from sshtunnel import SSHTunnelForwarder
import paramiko
import GetTelnetData
def Tunnel(hos_jump, port_jump, username, private_key_path, host_redis, port_redis):
"""
通过跳板机
:param host_jump: 跳板机地址
:param port_jump: 跳板机端口号
:param username: 登录名
:param private_key_path: 密钥地址
:param host_redis: 远程服务器地址
:param port_redis: 远程服务器端口号
:return: 通道实例
"""
rsaKey = paramiko.RSAKey.from_private_key_file(private_key_path) # 获取私钥
server = SSHTunnelForwarder(
(host_jump, int(port_jump)), # 跳板机的配置 int(port_jump)
ssh_pkey=rsaKey,
ssh_username = username,
remote_bind_address=(host_redis, int(port_redis)), # 连接redis服务器
local_bind_address=('0.0.0.0', 10022) ) # 开启本地转发端口
return server
def main():
host_jump = '47.96.13.10' # 跳板机地址
port_jump = '6523' # 跳板机端口号
username= 'jump' # 登录名
private_key_path = 'private' # 密钥路径
host_redis = '192.168.80.142' # redis地址
port_redis = '6379' # redis 端口号
# 连接redis库,获取数据
SeverTunnel = Tunnel(host_jump, port_jump, username, private_key_path, host_redis, port_redis) # 配置跳板登录服务器参数
SeverTunnel.start() # 连接服务器
Host = '127.0.0.1' # Telnet通过本地访问
commands = ['smembers jls_event_noble_sale_reward_open_sign_5','smembers jls_event_noble_sale_reward_open_sign_4'] # 执行的命令
port = SeverTunnel.local_bind_port # 获取本地转发接口
data = GetTelnetData.do_telnet(Host, port, commands) # 获取数据
SeverTunnel.close() # 关闭服务器
print data # 输出查询信息
if __name__ == '__main__':
main()
脚本运行结果: