下面是我手动完成的过程,我想在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。
发布于 2018-08-29 08:55:58
它看起来像这个命令:
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()
。
https://stackoverflow.com/questions/-100008825
复制相似问题