python - 在 Python 中打开 SSH 会话并在不同终端中运行命令
问题描述
以下是我手动执行的过程,我想在 Python 中将其自动化。
- 我正在使用以下命令打开 SSH 终端到 MySQL 服务器
cf ssh -L 63380:100.120.11.22:3380 appname
- 一旦建立了这个 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。
解决方案
我找到了避免 ssh 到 mysql 的方法。有一个 cf mysql 插件,我们可以通过它连接到 cf mysql 服务并执行查询。更多细节可以在以下位置找到: https ://github.com/andreasf/cf-mysql-plugin
推荐阅读
- reactjs - 在具有自定义格式的 18n/l10n 应用程序中创建可重用和解耦的 React 组件的最佳实践
- laravel - 数据未在 Vue Js 中呈现
- ios - 如何正确将字符串转换为日期?
- django - 如何组合日期字段和时间字段以存储在 Django api 发布请求中的日期时间字段中?
- c++ - 在 C++ 中使重载的成员访问运算符返回一个临时值
- javascript - 折叠 rowGroup 闪亮
- jquery - 具有不同内容的 Jquery 对话框
- android - 为 Android 运行 dx 或 d8 工具时出错
- powerbi - Power BI - 显示前一个工作日的数据 - 不包括周末
- php - 如何在数据表复选框中更新多个使用 php/ajax?