如何使用Java ProcessBuilder远程发出mysql命令

时间:2017-02-16 00:45:37

标签: java mysql ssh command processbuilder

我正在编写一个Java程序,我用ProcessBuilder发出远程命令。

所以我像这样构建我的字符串:

commands.add("/bin/sh");
commands.add("-c");
commands.add("ssh root@remoteserver.com \"pgrep -f this-app\"");

我从remoteserver获得了这个应用程序PID。

我的问题是如何使用-e发送mysql命令(传递mysql参数)

示例 - 我尝试过:

commands.add("/bin/sh");
commands.add("-c");
commands.add("ssh root@remoteserver.com \"mysql uroot -e \"drop database exampledb;\"\" ");

所需行为(本地):

Mysql -uroot -e "drop database exampledb"   

如果在本地而非远程发出命令,这将删除数据库。

从远程系统发出的类似行为:

/bin/sh -c "ssh root@remotesystem.com "pgrep -f this-app""

为流程构建器(工作)编写的内容:

commands.add("/bin/sh");
commands.add("-c");
commands.add("ssh root@remotesystem.com \"pgrep -f this-app\"");

这将返回此应用的进程ID。

来自远程系统的所需行为:

/bin/sh -c "ssh root@remotesystem.com "mysql -uroot -e "drop database exampledb"""    

从ssh(远程)删除数据库

但这不起作用。任何建议都非常感谢。

0 个答案:

没有答案