#! /bin/sh # # $Log$ # ask() { local question default answer question=$1 default=$2 if [ -z "${PACKAGE_BUILDING}" ]; then read -p "${question} [${default}]? " answer fi if [ x${answer} = x ]; then answer=${default} fi echo ${answer} } yesno() { local dflt question answer question=$1 dflt=$2 while :; do answer=$(ask "${question}" "${dflt}") case "${answer}" in [Yy]*) return 0;; [Nn]*) return 1;; esac echo "Please answer yes or no." done } make_account() { local u g gcos u=$1 g=$2 gcos=$3 if pw group show "${g}" >/dev/null 2>&1; then echo "You already have a group \"${g}\", so I will use it." else echo "You need a group \"${g}\"." if which -s pw && yesno "Would you like me to create it" y; then pw groupadd ${g} || exit echo "Done." else echo "Please create it, and try again." if ! grep -q "^${u}:" /etc/passwd; then echo "While you're at it, please create a user \"${u}\" too," echo "with a default group of \"${g}\"." fi exit 1 fi fi if pw user show "${u}" >/dev/null 2>&1; then echo "You already have a user \"${u}\", so I will use it." else echo "You need a user \"${u}\"." if which -s pw && yesno "Would you like me to create it" y; then pw useradd ${u} -g ${g} -h - \ -s /bin/sh -c "${gcos}" || exit echo "Done." else echo "Please create it, and try again." exit 1 fi fi } make_directories() { for dir in ${PKG_PREFIX}/www/data/munin \ ${PKG_PREFIX}/var/munin \ /var/run/munin; do mkdir -p $dir chown munin $dir done } create_crontab_entries() { local b e b=$1 e=$2 if [ crontab -u munin -l > /dev/null 2>&1 ]; then TMPFILE=`mktemp -t munin` || exit 1 sed -n -e "/^$b\$/,/^$e\$/p" > $TMPFILE crontab -u munin -l | sed -e '/^#BEGIN_MUNIN$/,/^#END_MUNIN$/d' | \ cat - $TMPFILE | crontab -u munin - rm $TMPFILE else crontab -u munin - fi } ######################################################################## case $2 in PRE-INSTALL) make_account munin munin "Munin owner" make_directories ;; POST-INSTALL) create_crontab_entries '#BEGIN_MUNIN' '#END_MUNIN' <