现在来看看 Ubuntu 的答案。

现在来看看 Ubuntu 的答案。

我得到以下(截断的)输出--status-all

$ service --status-all
 [..]
 [ - ]  ossec
 [ - ]  ossec-hids-authd
 [..]

但我无法通过以下方式访问它service

$ service status ossec-hids-authd
status: unrecognized service

我的 init.d 脚本如下所示:

#!/bin/sh -e
#### BEGIN INIT INFO
# Provides:          ossec-authd
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Authentication Daemon for OSSEC-HIDS.
# Description:       Provides key signing for OSSEC Clients
### END INIT INFO
NAME=ossec-authd
DAEMON=/var/ossec/bin/ossec-authd
DAEMON_ARGS="-p 1515 2>&1 >> /var/ossec/logs/ossec-authd.log &"
PIDFILE=/var/run/ossec-authd.pid

test -x ${DAEMON} || exit 5

case $1 in
 start)
  if [ -e $PIDFILE ]; then
   status_of_proc -p $PIDFILE $DAEMON "$NAME process" && status="0" || status="$?"
   if [ $status = "0" ]; then
    exit
   fi
  fi
  log_daemon_msg "Starting the process" "$NAME"
  if start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS; then
   log_end_msg 0
  else
   log_end_msg 1
  fi
  ;;
 stop)
  if [ -e $PIDFILE ]; then
   status_of_proc -p $PIDFILE $DAEMON "Stoppping the $NAME process" && status="0" || status="$?"
   if [ "$status" = 0 ]; then
    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
    /bin/rm -rf $PIDFILE
   fi
  else
   log_daemon_msg "$NAME process is not running"
   log_end_msg 0
  fi
  ;;
 restart)
  $0 stop && sleep 2 && $0 start
  ;;
 status)
  if [ -e $PIDFILE ]; then
   status_of_proc -p $PIDFILE $DAEMON "$NAME process" && exit 0 || exit $?
  else
   log_daemon_msg "$NAME Process is not running"
   log_end_msg 0
  fi
  ;;
 reload)
  if [ -e $PIDFILE ]; then
   start-stop-daemon --stop --signal USR1 --quiet --pidfile $PIDFILE --name $NAME -- $DAEMON_ARGS
   log_success_msg "$NAME process reloaded successfully"
  else
   log_failure_msg "$PIDFILE does not exists"
  fi
  ;;
 *)
  echo "Usage: $0 {start|stop|restart|reload|status}"
  exit 2
  ;;
esac

我做错了什么?

答案1

现在来看看 Ubuntu 的答案。

您已设法避免了不必要的麻烦ossec-control。但在 Ubuntu Linux 上,System 5rc脚本本身就是不必要的麻烦。

您正在使用 Ubuntu Linux。您已经拥有 upstart 或 systemd。 不要从编写 System 5rc脚本开始。

systemd

https://unix.stackexchange.com/a/200365/5132我展示了一个简单的 systemd 模板服务单元,它可以启动一大堆 OSSEC HIDS 服务作为模板实例。不幸的是,它不能与 一起使用ossec-authd,原因很简单,因为它没有-f其他程序那样的选项。具有讽刺意味的是,这是因为它没有其他程序所具有的不必要的(再次)双重分叉代码,并且它们必须使用选项关闭-f

这里有另一个要另存为的模板。/etc/systemd/system/[email protected]

[单元]
描述=OSSEC HIDS %i 服务器
之后=网络.目标

[服务]
类型=简单
ExecStartPre=/usr/bin/env /var/ossec/bin/ossec-%i -t
ExecStart = / usr / bin / env / var / ossec / bin / ossec-%i

[安装]
WantedBy=多用户.目标

此模板将被实例化为实际服务,并且[email protected]可以使用正常的 systemd 控制:

查看服务状态的命令是

系统控制
或者

systemctl --all
查看所有已加载的单元,甚至是非活动的单元。

暴发户

我自己从来没有在 upstart 下需要过 OSSEC HIDS,这只是一个/etc/init/ossec-authd.conf你需要研究的框架。

描述“OSSEC HIDS 身份验证服务器”

在运行级别启动 [2345]
在运行级别停止 [!2345]

重生

执行/var/ossec/bin/ossec-authd

进一步阅读

答案2

它似乎service --status-all会按文件名列出所有内容,但我的 init.d 脚本不知为何损坏了。

相关内容