我需要通过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 user@server '/etc/init.d/mysql restart'
它就会发生!答案 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)
确定。 我们走了。
搜索jboss服务的名称:
ls /etc/init.d/ |grep 'jboss'
返回“jboss-as”。没关系!
权限:
ls -al /etc/init.d/ |grep 'jboss'
返回完全相同的输出:-rwxr-xr-x. 1 root root 2979 Sep 19 05:34 jboss-as
没关系!
仍然无效。 执行此命令的主要目标是使用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();