[英]Opening SSH session and running commands in different terminal in Python
以下是我正在手动执行的过程,并且我想在Python中使其自动化。
cf ssh -L 63380:100.120.11.22:3380 appname
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。
在我看来,该命令如下:
cf ssh -L 63380:100.120.11.22:3380 appname
ssh到您的CloudFoundry应用程序服务器,并将本地计算机端口63380上的所有连接转发到远程端口3380。因此,看来您的mysql连接应该是:
mysql -u myuser -h localhost -pmypassword -D mydbname -P 63380 < init_db/mysql/schema.ddl
本地计算机上的init_db/mysql/schema.ddl
。
我不确定这是否可以与CloudFoundry一起使用,但是使用ssh可以运行如下所示的远程命令:
ssh username@<host or ip> <command>
#for example:
ssh myname@example.com ls -al
因此,您可以尝试在服务器上放置~/init_db/mysql/schema.dll
并使用以下命令:
cf ssh appname mysql -u myuser -pmypassword -Dmydbname -P 3380 < ~/init_db/mysql/schema.dll
您应该能够将该命令放入python的subprocess.Popen()
。
我找到了避免ssh到mysql的方法。 有一个cf mysql插件,通过它我们可以连接到cf mysql服务并执行查询。 可以在以下位置找到更多详细信息: https : //github.com/andreasf/cf-mysql-plugin
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.