如何使用SSH远程启动jboss服务?

时间:2013-10-24 03:13:09

标签: java shell ssh jboss jboss7.x

我需要通过SSH远程启动Jboss 7.1.1的服务。但是当执行命令时没有发生。

命令:ssh user@server '/etc/init.d/jboss-as start' #(no error, no service started)

脚本jboss-as:

#!/bin/sh
case "$1" in
    start)
        echo "Starting JBoss AS 7"
        su --command "/path/to/jboss-as-7.1.1.Final/bin/standalone.sh >& /dev/null &" root
    ;;
    stop)
        echo "Stopping JBoss AS 7"
        su --command "/path/to/jboss-as-7.1.1.Final/bin/jboss-cli.sh --connect command=:shutdown" root
    ;;
    *)
        echo "Usage: /etc/init.d/jboss-as {start|stop}"
        exit 1
    ;;
esac
exit 0

如何执行命令:ssh user@server 'service jboss-as start'ssh user@server '/etc/init.d/jboss-as start'

  • 与ssh的连接正常
  • Jboss服务器正常
  • 如果我执行代码:ssh user@server '/etc/init.d/mysql restart'它就会发生!

2 个答案:

答案 0 :(得分:0)

有一些事情限制了您使用该命令运行此服务的能力,因为这是启动服务的有效方法。

user@server '/etc/init.d/jboss-as start'

所有这些都可以在启动SSH连接后远程测试。 SSH进入服务器并使用您要连接的同一用户使用上述命令启动服务。

首先确保服务实际上被ls /etc/init.d/ | grep'jboss'称为'jboos-as'。结果将是你将如何调用命令,所以将gboss替换为grep的输出。

其次,它是init脚本的权限问题。从我在网上看到的你必须创建这个脚本,所以如果权限设置不正确,它将无法执行。

要检查运行ls -al /etc/init.d/ |grep 'jboss',您的输出应如下所示:

输出:

-rwxr-xr-x.  1 root root   2979 Sep 19 05:34 jboss*

发出start命令的用户需要匹配列出的第一个用户。在这种情况下,第一个“根”和/或与组列表位于同一组中,组列表是示例中的第二个“根”。例如,如果您的用户位于wheel组中,则可能会有所不同,但通常服务是以root用户身份运行的,或者是该服务的特定用户。

最后,更重要的方面是文件是可执行的。这在上面的ls -al输出中列为x值。如果没有列出'x',则需要使用以下内容使文件可执行:

chmod +x /etc/init.d/jboss

重要以上所有命令都需要您在第一个grep命令中输出文件,因此/etc/init.d/jboss-as或/etc/init.d/ jboss或/etc/init.d/jboss-something different。

我希望这可以帮助你,如果没有,请发布ls -al输出的结果,我们可以帮助你。

答案 1 :(得分:0)

确定。 我们走了。

  1. 搜索jboss服务的名称:

    ls /etc/init.d/ |grep 'jboss'返回“jboss-as”。没关系!

  2. 权限:

    ls -al /etc/init.d/ |grep 'jboss'返回完全相同的输出:-rwxr-xr-x. 1 root root 2979 Sep 19 05:34 jboss-as没关系!

  3. 仍然无效。 执行此命令的主要目标是使用SWT的Java程序中的按钮操作和实现称为JSCH的SSH的lib。看代码:

    Session session = jsch.getSession("user", "SERVER_IP_ADDRESS", PORT);
    session.setPassword("pass");
    java.util.Properties config = new java.util.Properties(); 
    config.put("StrictHostKeyChecking", "no");
    session.setConfig(config);
    session.connect();
    Channel channel = session.openChannel("exec");
    ((ChannelExec)channel).setCommand("'/etc/init.d/jboss-as start'"); #command to start jboss service
    channel.setInputStream(null);
    ((ChannelExec)channel).setErrStream(System.err);
    InputStream in=channel.getInputStream();
    channel.connect();