如何从Java运行远程机器上的shell脚本?

时间:2009-10-09 08:44:35

标签: java postgresql shell invoke

我正在创建一个测试,它将对与Postgres数据库通信的应用程序执行一些压力测试。为了使其可复制,我想在每次运行时重新创建数据库。用org.junit.Before注释修饰的启动方法将删除数据库(如果存在)并从转储文件中恢复它。执行此表单shell /命令很简单:

psql -f db.out newdb

或沿着这些方向的东西。由于测试可能是在没有在托管数据库的同一台机器上运行的JVM上进行的,我想知道是否可以从Java programmaticaly调用远程机器上的shell / batch脚本。

由于

2 个答案:

答案 0 :(得分:4)

如果您了解机器详细信息(主机名,登录名,密码),我现在唯一能想到的就是使用Java SSH library登录该框并运行该命令。

或者您可以在本地计算机上编写脚本,该脚本在给定正确参数的情况下在远程计算机上运行脚本。

这是我能想到的最简单的方式!

答案 1 :(得分:2)

如果设置SSH过于复杂,您可以编写一个小型Java程序来侦听套接字上的连接,然后运行该脚本。在Postgres服务器上安装它并在测试用例中连接到它。

那就是说,我建议在每台开发者机器上安装Postgres的副本。这将使您的测试运行得更快,并且当两个开发人员同时运行测试时,您不会得到虚假错误。此外,由于网络问题,您不会有错误,因为有人在服务器上进行维护,因为开发人员X已经更改了数据库架构等等。