Last bug to iron out in Ubuntu 6.10 - zm init script..
Posted: Tue Nov 07, 2006 8:24 pm
phew! ok, I have zm 1.22 completely working on ubuntu 6.10 desktop
many thanks to everyone here for using "concise" instructions..
basically, all worked well with the 6.06 install
1 question though, when I start, stop, or restart, I always get these error messages..
I've only been using linux for about 6 days, managed to get all other bugs
ironed out, so bear with me..
Any help would be apreciated! it works, it's just annoying...
Dan
many thanks to everyone here for using "concise" instructions..
basically, all worked well with the 6.06 install
1 question though, when I start, stop, or restart, I always get these error messages..
I've only been using linux for about 6 days, managed to get all other bugs
ironed out, so bear with me..
and here's my script...$Stopping ZoneMinder: sh: Syntax error: Bad fd number
success
Starting ZoneMinder: sh: Syntax error: Bad fd number
success
Code: Select all
dan@dan-desktop:~$ cat /etc/init.d/zm
#!/bin/sh
# description: Control ZoneMinder as a Service
# chkconfig: 2345 99 00
# Source function library.
#. /etc/rc.d/init.d/functions
prog=ZoneMinder
ZM_VERSION="1.22.2"
ZM_PATH_BIN="/usr/local/bin"
ZM_CONFIG="/usr/local/etc/zm.conf"
command="$ZM_PATH_BIN/zmpkg.pl"
loadconf()
{
if [ -f $ZM_CONFIG ]; then
. $ZM_CONFIG
else
echo "ERROR: $ZM_CONFIG not found."
return 1
fi
}
# Check for old config and update if needed
checkcfg()
{
# Check config
if [ "$ZM_DB_HOST" = "" -o "$ZM_DB_NAME" = "" -o "$ZM_DB_USER" = "" -o "$ZM_DB_PASS" = "" ]; then
if [ "$ZM_DB_SERVER" != "" -a "$ZM_DB_NAME" != "" -a "$ZM_DB_USERA" != "" -a "$ZM_DB_PASSA" != "" ]; then
echo -n "Converting $ZM_CONFIG"
cp $ZM_CONFIG $ZM_CONFIG.old && \
cat $ZM_CONFIG.old | \
grep -v ZM_DB_USERB | \
grep -v ZM_DB_PASSB | \
sed -e 's/ZM_DB_USERA/ZM_DB_USER/' | \
sed -e 's/ZM_DB_PASSA/ZM_DB_PASS/' >$ZM_CONFIG && \
rm -f $ZM_CONFIG.old
RETVAL=$?
[ $RETVAL = 0 ] && echo_success
[ $RETVAL != 0 ] && echo_failure
echo
fi
if [ "$ZM_DB_SERVER" != "" -a "$ZM_DB_NAME" != "" -a "$ZM_DB_USER" != "" -a "$ZM_DB_PASS" != "" ]; then
echo -n "Converting $ZM_CONFIG to 1.22.0"
cp $ZM_CONFIG $ZM_CONFIG.old
rm -f $ZM_CONFIG
cat $ZM_CONFIG.old | \
sed -e 's/ZM_DB_SERVER/ZM_DB_HOST/' >/tmp/$$
. /tmp/$$
cp $ZM_CONFIG.rpmnew $ZM_CONFIG && chmod 644 $ZM_CONFIG
for n in ZM_DB_HOST ZM_DB_NAME ZM_DB_USER ZM_DB_PASS; do
eval "val=\$$n"
if [ "$val" != "" ]; then
cp $ZM_CONFIG /tmp/$$.rpmnew &&
sed 's/^'$n='.*$/'$n=$val'/g' /tmp/$$.rpmnew >$ZM_CONFIG
fi
done
rm /tmp/$$
RETVAL=$?
[ $RETVAL = 0 ] && echo_success
[ $RETVAL != 0 ] && echo_failure
echo
else
echo "In $ZM_CONFIG there should not be null values."
return 1
fi
loadconf
fi
}
checkdb()
{
# Check database exisits and version
GetVer="select Value from Config where Name='ZM_DYN_DB_VERSION'"
OLD_VERSION=`echo $GetVer | mysql -B -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME | grep -v '^Value'`
if [ "$OLD_VERSION" = "" ]; then
GetVer="select Value from Config where Name='ZM_DYN_CURR_VERSION'"
OLD_VERSION=`echo $GetVer | mysql -B -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME | grep -v '^Value'`
if [ "$OLD_VERSION" = "" ]; then
echo -n "You must run zmupdate.pl manualy"
return 1
fi
fi
RETVAL=$?
if [ $RETVAL != 0 ]; then
tbls=`mysql -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS -s -e 'show tables' $ZM_DB_NAME`
RETVAL=$?
if [ $RETVAL = 0 ]; then
echo -n "Initialize $prog database: "
echo tbls | grep Config >/dev/null 2>&1
RETVAL=$?
if [ $RETVAL != 0 ]; then
mysql -B -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME < $ZM_PATH_UPDATE/zm_create.sql
RETVAL=$?
[ $RETVAL = 0 ] && echo_success
[ $RETVAL != 0 ] && echo_failure
echo
return $RETVAL
fi
( cd $ZM_PATH_UPDATE; perl $ZM_PATH_BIN/zmupdate.pl -f )
RETVAL=$?
[ $RETVAL = 0 ] && echo_success
[ $RETVAL != 0 ] && echo_failure
echo
return $RETVAL
else
echo "No access to ZoneMinder database. Run $ZM_PATH_BIN/zminit manually."
return $RETVAL
fi
else
[ "$ZM_VERSION" = "$OLD_VERSION" ] && return 0
echo -n "Upgrade $prog database: "
$ZM_PATH_BIN/zmupdate.pl --version=$OLD_VERSION --noi && ( cd $ZM_PATH_UPDATE; perl $ZM_PATH_BIN/zmupdate.pl -f )
RETVAL=$?
[ $RETVAL = 0 ] && echo_success
[ $RETVAL != 0 ] && echo_failure
echo
return $RETVAL
fi
}
start()
{
loadconf || return $?
checkcfg || return $?
checkdb || return $?
#/usr/local/sbin/motd.sh > /etc/motd
echo -n "Starting $prog: "
[ ! -d /var/run/zm ] \
&& mkdir -m 774 /var/run/zm \
&& chown $ZM_WEB_USER:$ZM_WEB_GROUP /var/run/zm
GetPath="select Value from Config where Name='ZM_PATH_SOCKS'"
ZM_PATH_SOCK=`echo $GetPath | mysql -B -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME | grep -v '^Value'`
[ ! -d $ZM_PATH_SOCK ] \
&& mkdir -m 774 $ZM_PATH_SOCK \
&&chown $ZM_WEB_USER:$ZM_WEB_GROUP $ZM_PATH_SOCK
$command start
RETVAL=$?
[ $RETVAL = 0 ] && echo success
[ $RETVAL != 0 ] && echo failure
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/zm
return $RETVAL
}
stop()
{
echo -n $"Stopping $prog: "
$command stop
RETVAL=$?
[ $RETVAL = 0 ] && echo success
[ $RETVAL != 0 ] && echo failure
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/zm
}
status()
{
result=`$command status`
if [ "$result" = "running" ]; then
echo "ZoneMinder is running"
RETVAL=0
else
echo "ZoneMinder is stopped"
RETVAL=1
fi
}
case "$1" in
'start')
start
;;
'stop')
stop
;;
'restart')
stop
start
;;
'condrestart')
loadconf
checkcfg
result=`$ZM_PATH_BIN/zmdc.pl check`
if [ "$result" = "running" ]; then
$ZM_PATH_BIN/zmdc.pl shutdown > /dev/null
start
fi
;;
'status')
status
;;
*)
echo "Usage: $0 { start | stop | restart | condrestart | status }"
RETVAL=1
;;
esac
exit $RETVAL
dan@dan-desktop:~$
Dan