#!/bin/sh set -eu die() { echo "${0}:" "$@" >&2 exit 1 } : ${CATSITD_PIPE:='%%RUNDIR%%/catsitd.pipe'} while getopts 'c:' opt; do case "${opt}" in (c) CATSITD_PIPE=$OPTARG;; (?) exit 1;; esac done shift $((OPTIND - 1)) if ! [ -p "${CATSITD_PIPE}" ]; then die "${CATSITD_PIPE} is not a named pipe" fi if ! [ -w "${CATSITD_PIPE}" ]; then die "${CATSITD_PIPE} is not writable" fi [ $# -lt 1 ] && die 'action required' [ $# -lt 2 ] && die 'service name required' action=$(echo "${1}" | tr 'A-Z' 'a-z') for valid in start stop restart status drop $(kill -l | tr 'A-Z' 'a-z'); do [ "${action}" = "${valid}" ] && break done if [ "${action}" != "${valid}" ]; then die "${action} is not a valid action or signal" fi echo "$@" > "${CATSITD_PIPE}"