arT2
08.04.2011, 18:50
hi zusammen,
bin nicht sehr fit im bash scripting... hab' mir einen "pseudo daemon" gescriptet. "pseudo" deshalb weil es ja eigentlich nur eine sich selbst aufrufende funktion ist...
anyways was ich mich frage ist: kann man das so belassen? oder habe ich das problem zwar gelöst aber evt. auf die mieseste art? lasst es mich doch bitte wissen, ob der code unten eher zu verachten ist. es funktioniert soweit problemlos (http://bitserver.endofinternet.net/mpd-status). aber eben...
*** ist die funktion in engine.sh ok? geht das nicht einfacher? ***
simple - starter für den pseudo daemon
#!/bin/bash
### config start
### (also adjust once sh.engine)
MODULE_HANDLE="simple"
### config end
source "`dirname $0`/sh.engine"
MODULE="$MPDPT_ROOT/app/module/$MODULE_HANDLE.php"
OUTPUT="$MPDPT_ROOT/www/$MODULE_HANDLE.html"
mpc_idle_daemon
exit 0
sh.engine - kleine config und funktionen.
#!/bin/bash
MPC=/usr/bin/mpc
PHP=/usr/bin/php
MPDPT_ROOT="/home/art2/dev/coding/php/mpd_phptool/v1"
LOCAL_WWW="/home/art2/dev/coding/php/mpd_phptool/v1/www/"
REMOTE_WWW="/home/art2/BITSERVER/home/alien/www/mpd-status/"
DTFORMAT="%Y-%m-%d %T"
function mpc_idle_daemon {
RUN=1
while [ $RUN == 1 ]; do
echo "[$(date +"$DTFORMAT")] idling..."
if [ `$MPC idle player` ]; then
echo "[$(date +"$DTFORMAT")] change detected!"
dump=`$PHP $MODULE`
if [ $? == 0 ]; then
echo -e "$dump" > "$OUTPUT"
echo "[$(date +"$DTFORMAT")] output generated!"
update_remote_content
if [ $? == 0 ]; then
echo "[$(date +"$DTFORMAT")] remote content updated!"
else
echo "[$(date +"$DTFORMAT")] error while updating remote content!"
fi
else
echo "[$(date +"$DTFORMAT")] error while generating output!"
fi
RUN=0
else
echo "[$(date +"$DTFORMAT")] is mpd running?"
exit 1
fi
done
mpc_idle_daemon
}
function update_remote_content {
rsync -r -t -p -v --progress --delete -l -H -z -s "$LOCAL_WWW" "$REMOTE_WWW"
}
danke für's durchlesen!
vibes:)
bin nicht sehr fit im bash scripting... hab' mir einen "pseudo daemon" gescriptet. "pseudo" deshalb weil es ja eigentlich nur eine sich selbst aufrufende funktion ist...
anyways was ich mich frage ist: kann man das so belassen? oder habe ich das problem zwar gelöst aber evt. auf die mieseste art? lasst es mich doch bitte wissen, ob der code unten eher zu verachten ist. es funktioniert soweit problemlos (http://bitserver.endofinternet.net/mpd-status). aber eben...
*** ist die funktion in engine.sh ok? geht das nicht einfacher? ***
simple - starter für den pseudo daemon
#!/bin/bash
### config start
### (also adjust once sh.engine)
MODULE_HANDLE="simple"
### config end
source "`dirname $0`/sh.engine"
MODULE="$MPDPT_ROOT/app/module/$MODULE_HANDLE.php"
OUTPUT="$MPDPT_ROOT/www/$MODULE_HANDLE.html"
mpc_idle_daemon
exit 0
sh.engine - kleine config und funktionen.
#!/bin/bash
MPC=/usr/bin/mpc
PHP=/usr/bin/php
MPDPT_ROOT="/home/art2/dev/coding/php/mpd_phptool/v1"
LOCAL_WWW="/home/art2/dev/coding/php/mpd_phptool/v1/www/"
REMOTE_WWW="/home/art2/BITSERVER/home/alien/www/mpd-status/"
DTFORMAT="%Y-%m-%d %T"
function mpc_idle_daemon {
RUN=1
while [ $RUN == 1 ]; do
echo "[$(date +"$DTFORMAT")] idling..."
if [ `$MPC idle player` ]; then
echo "[$(date +"$DTFORMAT")] change detected!"
dump=`$PHP $MODULE`
if [ $? == 0 ]; then
echo -e "$dump" > "$OUTPUT"
echo "[$(date +"$DTFORMAT")] output generated!"
update_remote_content
if [ $? == 0 ]; then
echo "[$(date +"$DTFORMAT")] remote content updated!"
else
echo "[$(date +"$DTFORMAT")] error while updating remote content!"
fi
else
echo "[$(date +"$DTFORMAT")] error while generating output!"
fi
RUN=0
else
echo "[$(date +"$DTFORMAT")] is mpd running?"
exit 1
fi
done
mpc_idle_daemon
}
function update_remote_content {
rsync -r -t -p -v --progress --delete -l -H -z -s "$LOCAL_WWW" "$REMOTE_WWW"
}
danke für's durchlesen!
vibes:)