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

Java 如何使用SSH远程启动jboss服务?,java,shell,ssh,jboss,jboss7.x,Java,Shell,Ssh,Jboss,Jboss7.x,我需要通过SSH远程启动Jboss 7.1.1的服务。但当执行命令时,命令不会发生 命令:sshuser@server“/etc/init.d/jboss-as start”#(无错误,无服务启动) 脚本jboss为: #!/bin/sh case "$1" in start) echo "Starting JBoss AS 7" su --command "/path/to/jboss-as-7.1.1.Final/bin/standalone.sh &

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

命令:
sshuser@server“/etc/init.d/jboss-as start”#(无错误,无服务启动)

脚本jboss为:

#!/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
如何执行命令:
sshuser@server“将jboss作为开始服务”
sshuser@server“/etc/init.d/jboss-as start”

  • 与ssh的连接正常
  • Jboss服务器正常
  • 如果我执行代码:
    sshuser@server“/etc/init.d/mysql restart”
    它发生了
有几件事限制了您使用命令运行此服务的能力,因为这是启动服务的有效方法

user@server '/etc/init.d/jboss-as start'
所有这些都可以在启动SSH连接后进行远程测试。SSH连接到服务器,并使用上面的命令与要连接的同一用户启动服务

首先,确保该服务在ls/etc/init.d/| grep“jboss”中实际被称为“jboos as”。结果就是您将如何调用该命令,因此用grep的输出替换jbossas

其次是init脚本的权限问题。从我在网上看到的情况来看,您必须创建此脚本,因此如果权限设置不正确,它将无法执行

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

输出:

-rwxr-xr-x.  1 root root   2979 Sep 19 05:34 jboss*
发出start命令的用户需要匹配列出的第一个用户。在这种情况下,第一个“根”和/或与示例中的第二个“根”所在的组列表位于同一组中。例如,如果您的用户在控制盘组中,这可能会有所不同,但服务通常作为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不一样

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

好的。 我们走吧

  • 搜索jboss服务的名称:

    ls/etc/init.d/| grep'jboss'
    返回了“jbossas”。没关系

  • 权限:

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

  • 还是不行。 执行此命令的主要目的是在Java程序中使用SWT和实现SSH(称为JSCH)的库执行button操作。查看代码:

    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();