通过ssh隧道连接到数据库

tunneler的Python项目详细描述


一种命令工具和库,以最小的麻烦连接到数据库。

要安装:

$ pip install tunneler

您可能还需要首选数据库的数据库驱动程序。要在安装tunneler时自动安装Postgres,请执行以下操作:

$ pip install tunneler[pg]

运行:

$ tunneler name_of_task name_of_connection

如上面的命令所示,在运行tunneler时需要理解两个概念,connectionstasks

在当前目录中的connections.yaml文件中定义连接,如下所示:

prod:remote_host:publicjumpboxservernamessh_username:usernamessh_pkey:|-----BEGIN RSA PRIVATE KEY-----..............................................................................-----END RSA PRIVATE KEY-----private_dburl:postgres://username:password@privatedbservername/databasenamelocal_port:5433dev:.....

您还可以在配置中指定ssh_config变量。tunneler然后将使用来自主机ssh配置的值。例如:

prod:ssh_config:prod-jumpboxprivate_dburl:postgres://username:password@privatedbservername/databasenamelocal_port:5433dev:.....

这将使用在现有SSH配置文件中指定的远程主机/用户名/私钥,因此不需要在配置文件

中重复它们。

Tunneler将使用此信息设置本地Tunneled Post,您可以在其中直接访问此数据库。

然后将向每个task提供到此本地端口的连接url。

有三个内置任务:

  • test_connection (run this one to check your config is correct)
  • do_full_pg_dump (assumes you have pg_dump installed)
  • do_schema_pg_dump (also assumes you have pg_dump installed)

例如,为了转储生产模式,我们运行以下命令:

$ tunneler do_schema_pg_dump prod

自定义任务

想定义自己的任务吗?只需在当前目录中创建tasks.py文件(或模块)。

在此文件中定义接受连接URL的顶级方法,该方法名称将作为任务提供。

例如,测试连接任务可以重新实现如下:

fromsqlbagimportSdeftest_connection_custom(dburl):withS(dburl)ass:s.execute('select 1')

然后按如下方式运行:

$ tunneler test_connection_custom prod

很简单。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将json反序列化为列表<Object>   Spring框架中的java回滚机制   java如何使反射在JDK 16及更高版本上工作?   java终结器如何导致可移植性问题?   java Hibernate使用ON子句或alternative左连接获取   java aws codebuild maven项目失败“保存的引用不明确”   并发Java多线程读取单个大文件   java如果输入仅由1和0组成,请将其从二进制转换为十进制   java在RealmRecyServiceAdapter上调用updateData实际上并没有更新数据   javajsf:h commandlink操作是打开同一页面的新弹出窗口,而不是调用bean方法   java我们可以为其中一个变量同时添加@Column和@OneToOne注释吗?   java JBoss AS 7自定义登录模块从未调用   如何检查Java中是否存在数组中的元素   java Spring重试:未调用带@Recover注释的方法   如何解析带有Java错误HTTP格式问题的php消息   java如何在weblogic中部署可选的包共享库   java将配置单元中的数据集保存为avro格式的合并列   用Guice注入java泛型   java单选按钮组和额外选项   javajackson:如何读取字符串作为列表?