首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中打开SSH会话并在不同终端中运行命令

在Python中打开SSH会话并在不同终端中运行命令
EN

Stack Overflow用户
提问于 2018-08-28 23:53:14
回答 1查看 0关注 0票数 0

下面是我手动完成的过程,我想在Python中自动化它。

  1. 我使用下面的命令打开SSH终端到MySQL服务器
代码语言:javascript
复制
cf ssh -L 63380:100.120.11.22:3380 appname
  1. 建立此SSH后,我正在执行ctrl+ t打开新的终端选项卡并在命令下运行以创建数据库对象
代码语言:javascript
复制
mysql -u myuser -h 0 -pmypassword -D mydbname -P 3380 < init_db/mysql/schema.ddl

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

代码语言:javascript
复制
process = subprocess.Popen("cf ssh -L 63380:100.120.11.22:3380 appname",shell = True)

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

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

发布于 2018-08-29 08:55:58

它看起来像这个命令:

代码语言:javascript
复制
cf ssh -L 63380:100.120.11.22:3380 appname

ssh到你的CloudFoundry应用服务器,并将本地机器的端口63380上的任何连接转发到远程端口3380.所以看起来你的mysql连接应该是:

代码语言:javascript
复制
mysql -u myuser -h localhost -pmypassword -D mydbname -P 63380 < init_db/mysql/schema.ddl

init_db/mysql/schema.ddl本地机器上的位置。

我不完全确定这是否适用于CloudFoundry,但使用ssh可以运行如下的远程命令:

代码语言:javascript
复制
ssh username@<host or ip> <command>
#for example:
ssh myname@example.com ls -al

因此,您可以尝试~/init_db/mysql/schema.dll使用服务器并使用此命令:

代码语言:javascript
复制
cf ssh appname mysql -u myuser -pmypassword -Dmydbname -P 3380 < ~/init_db/mysql/schema.dll

你应该能够将该命令放入python中subprocess.Popen()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档