#! /bin/sh # /etc/init.d/p0f # ### BEGIN INIT INFO # Provides: p0f # Required-Start: $local_fs $network # Required-Stop: $local_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the passive OS fingerprinting tool # Description: starts p0f using start-stop-daemon ### END INIT INFO PATH=/sbin:/bin:/usr/sbin:/usr/bin PROG="p0f" NAME="$0" NAME="${NAME##*/}" DAEMON="/usr/local/sbin/p0f" DESC="passive OS fingerprinting tool" # Set default p0f configuration. P0F_FINGERPRINT_DATABASE="/usr/local/etc/p0f.fp" P0F_SOCKET="/var/run/${NAME}.sock" P0F_PIDFILE="/var/run/${NAME}.pid" #P0F_EXTRA_COMMAND_ARGS="-o /var/log/p0f.log" P0F_EXTRA_COMMAND_ARGS="" test -f /etc/default/${NAME} && . /etc/default/${NAME} test -x ${DAEMON} || exit 0 . /lib/lsb/init-functions case "$1" in start) if [ -z "${P0F_IFACE}" ] ; then log_warning_msg " P0F_IFACE not found in /etc/default/${NAME}" RETVAL=1 else [ "$VERBOSE" != no ] && log_daemon_msg "Starting ${DESC} " "${NAME}" start-stop-daemon --start --quiet --oknodo --pidfile ${P0F_PIDFILE} --exec ${DAEMON} -- -d -f ${P0F_FINGERPRINT_DATABASE} -s ${P0F_SOCKET} -i ${P0F_IFACE} ${P0F_EXTRA_COMMAND_ARGS} < /dev/null RETVAL=$? if [ "${RETVAL}" -eq 0 ]; then log_end_msg 0 PID=`/bin/ps axuw | /bin/grep ${prog} | /bin/grep -v grep | /bin/grep ${P0F_SOCKET} | /usr/bin/awk '{print $2}'` [ -z "${PID}" ] || echo ${PID} > ${P0F_PIDFILE} else log_failure_msg " Unable to start ${NAME}" fi fi ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping ${DESC} " "${NAME}" start-stop-daemon --stop --quiet --oknodo --pidfile ${P0F_PIDFILE} --exec ${DAEMON} --retry 10 RETVAL=$? if [ "${RETVAL}" -eq 0 ]; then rm -f ${P0F_PIDFILE} log_end_msg 0 else log_failure_msg " Unable to stop ${NAME}" fi ;; reload) [ -f ${P0F_PIDFILE} ] && /bin/kill -HUP $(/bin/cat ${P0F_PIDFILE}) ;; status) status_of_proc -p "${P0F_PIDFILE}" "${DAEMON}" "${NAME}" && exit 0 || exit $? ;; restart|force-reload) $0 stop $0 start ;; *) echo "Usage: /etc/init.d/${NAME} {start|stop|restart|force-reload|reload}" >&2 exit 1 ;; esac exit $RETVAL