文档章节

sshtunnel和paramiko

苗永超
 苗永超
发布于 2016/11/08 21:37
字数 321
阅读 43
收藏 1

     研究这个的起因: 需要在本地用脚本连接线上数据库,线上库与本地网络存在网络隔离,需要使用ssh隧道访问特定端口才能连接到数据库。于是就在想一些办法去通过访问跳板机,进而访问线上数据库。

     在调研过程中,发现sshtunnel模块可以实现我的需求。

     安装过程不累述,pip install 就好。mac可能会遇到权限问题,建议制定用户安装(pip install XXXX —user -U),而不是安装到系统上,这样很优雅。

     talk is cheap, show code.

import MySQLdb
import json
import paramiko
from sshtunnel import SSHTunnelForwarder
import traceback

hostname = '' 
username = '' 
password = ''
port = 22

db_hostname = '' 
db_username = '' 
db_password = ''
db_port    = 3306
db_name = ''

server = SSHTunnelForwarder((hostname, port), ssh_password=password, ssh_username=username, remote_bind_address=(db_hostname, db_port))

def query_db(sql):
    try:
        server.start()
        db = MySQLdb.connect(host='127.0.0.1',
            port=server.local_bind_port,
            user=db_username,
            passwd=db_password,
            db=db_name)
        cursor = db.cursor()
        cursor.execute(sql)
        data = cursor.fetchall()
        print data

        db.close()
        server.close()
    except:
        traceback.print_exc()
        server.close()

if __name__=='__main__':
    sql = ""
    query_db(sql)

 

 

     在调研过程中,还发现了paramiko这个模块,很有意思。它可以在本地使用脚本去远程服务器上执行命令。

     安装过程同样不累述, demo代码如下:

import paramiko

hostname = ''
username = ''
password = ''
port = 22

def connect():
    paramiko.util.log_to_file('paramiko.log')
    s=paramiko.SSHClient()
    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    s.connect(hostname=hostname, username=username, password=password, port=port)
    stdin, stdout, stderr=s.exec_command('ls -l')
    print stdout.read()
    s.close()

if __name__=='__main__':
    connect()

 

© 著作权归作者所有

共有 人打赏支持
苗永超
粉丝 15
博文 57
码字总数 14075
作品 0
海淀
后端工程师
私信 提问
ceph集群监控告警

 计划 openvpn linux client打通vpn sshtunnel 的 SSHTunnelForwarder 和 paramiko.SSHClient 打通跳板机 celery+redis做定时 cvs输出 server酱做微信告警http://sc.ftqq.com influxdb做数据......

wzyuliyang
2016/12/14
60
0
一次 dropbear 和 openssh 冲突的经历

任务:在 OpenWRT 路由器 C 用公钥验证方式登录另一台 OpenWRT 路由器 S。 现象:一开始配置完很顺利登录,后来进行一些操作后,居然登录不了了,提示输入密码…… 类似情况:https://githu...

UMU
2016/05/26
228
0
python ssh tunnel

安装 sshtunnel 使用示例

flyking
2016/10/24
182
0
Python 的 SSH 通讯隧道--sshtunnel

sshtunnel 是 Python 开发的一个服务,用来与远程服务器建立 SSH 通讯隧道。 示例代码: from sshtunnel import SSHTunnelForwarder server = SSHTunnelForwarder( 'pahaz.urfuclub.ru', ssh......

匿名
2017/03/12
363
0
python之ssh连接库paramiko

paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。 一:paramiko的安装 1.安装方式一 下载pycrypto安装(paramiko依赖这个包) https://www...

Jeff_Linux
2014/06/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java 基础脑图 转载来的

NotFound403
27分钟前
1
0
Mac系统搭建Nginx+php-fpm

分享背景 由于一直在虚拟机的状态下开发PHP,尝试一下mac本地搭建环境.mac本身是自带Apache+php的,在低版本的mac系统中,mac中的php版本是5.6的版本. 本文分享的是在mac的10.13版本.前提是本地...

编程浪子走四方
48分钟前
2
0
用Python爬取"王者农药"英雄皮肤

0.引言 作为一款现象级游戏,王者荣耀,想必大家都玩过或听过,游戏里中各式各样的英雄,每款皮肤都非常精美,用做电脑壁纸再合适不过了。本篇就来教大家如何使用Python来爬取这些精美的英雄...

上海小胖
49分钟前
0
0
CSS,JavaScript实现手风琴导航菜单

<!DOCTYPE html><html><head> <title>Side Navigator Demo</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> </script> <link re......

yuewawa
53分钟前
1
0
mysql 系统设置SQL

打开、关闭日志 SET GLOBAL general_log = 'Off'; SET GLOBAL general_log = 'On'; 查看日志是否打开 show variables like '%general%';...

jingshishengxu
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部