首页 > 解决方案 > 在 Python 中打开 SSH 会话并在不同终端中运行命令

问题描述

以下是我手动执行的过程,我想在 Python 中将其自动化。

  1. 我正在使用以下命令打开 SSH 终端到 MySQL 服务器
cf ssh -L 63380:100.120.11.22:3380 appname
  1. 一旦建立了这个 SSH,我正在做ctrl+t打开一个新的终端选项卡并运行下面的命令来创建数据库对象
mysql -u myuser -h 0 -pmypassword -D mydbname -P 3380 < init_db/mysql/schema.ddl

现在我已经为第 1 步编写了 Python 代码,如下所示

process = subprocess.Popen("cf ssh -L 63380:100.120.11.22:3380 appname",shell = True)

它打开 SSH 终端,但是当使用下面的代码运行第二步时,它没有连接到打开的 SSH 终端,它说无法连接到 MySQL 服务器。

pro = subprocess.Popen("mysql -u myuser -h 0 -pmypassword -D mydbname -P 3380 < init_db/mysql/schema.ddl", stdout=subprocess.PIPE,shell=True, preexec_fn=os.setsid) 

我已经搜索并尝试了其他选项,例如在不同的程序中编写步骤 2 并在 SSH 建立后从第一个程序调用但没有用。

请让我知道 Python 中是否有任何可用的解决方案。环境:mac,pcf。

标签: pythonmysql

解决方案


我找到了避免 ssh 到 mysql 的方法。有一个 cf mysql 插件,我们可以通过它连接到 cf mysql 服务并执行查询。更多细节可以在以下位置找到: https ://github.com/andreasf/cf-mysql-plugin


推荐阅读