我正在编写一个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(远程)删除数据库
但这不起作用。任何建议都非常感谢。