Meguntam már hogy állandóan oda kell rohanni, bámulni az új log bejegyzés(eke)t, újraindítani a Hylafaxot, jópofizni, magyarázkodni keljen, majd elköszönni.
sz'al írtam rá egy scriptet. Rohangáljon az.
Cronból teszi ezt 5 percenként, de mint láthatod ez egy deszkamodell, alig három, három és fél hónapja működik ezen fax szerveren, és azóta még nem kellet odamennem jópofizni.
Azt azért újra meg kell jegyeznem, hogy kísérleti darab. És mint mindenki, - vagy inkább mint senki - a programot csak a saját felelősségedre...
blablabla
#!/bin/bash
# HylaFax segfaultot ellenőrző script
#################################
# apostrophe at t-online dot hu #
#################################
MESSAGE=
MAILADDR='faxmaster'
SUBJECT='Hylafax error'
LOCK='/var/lock/chkhylafax.loc'
SFDATES='/var/local/hylafax-segfault'
SFLOG='/var/log/hylafax-segfault.log'
LOGMESSAGES='/var/log/messages'
FILTER='faxgetty\[[0-9]*\]: segfault at .* error 4'
TREATED='no'
[ -e "$LOCK" ] && exit 0 || touch "$LOCK"
trap 'rm -f '"$LOCK"'' EXIT
[ -e $(dirname $SFDATES) ] || mkdir $(dirname $SFDATES)
[ -e "$SFDATES" ] || touch "$SFDATES"
# echo "$(date "+%h %d %H:%M:%S") $(hostname) $(basename $0): run $0 " >> /var/log/hylafax-segfault.log
########################################################################
# Törlés a segfaultok dátumát jelző filéből #
#
# A logrotate miatt a /var/log/messages filéből eltűnnek a bejegyzések #
# ez tévesen/feleslegesen újraindítja a HylaFax servert #
# /var/local/hylafax-segfault beolvasása soronként
cat "$SFDATES" | \
while read LINE
do
# a segfaultok dátumait összeveti a messagesben található segfault bejegyzésekkel
if cat "$LOGMESSAGES" | grep "^$LINE .* $FILTER"
then
:
else
# mivel a segfault dátuma nem található a messagesben,
# töröli a segfault dátumai közül
sed -i '/^'"$LINE"'/d' "$SFDATES"
fi
done
# az esetleges üres sorok törlése
sed -i '/^$/d' "$SFDATES"
#######################################
# HylaFax szerver segfaultok kezelése #
# a messages listázása
# a HylaFax segfaultok keresése
# csak a dátum kell
# beolvasás soronként
cat "$LOGMESSAGES" | grep "$FILTER" | \
awk '{print $1 " " $2 " " $3}' | \
while read LINE
do
# segfault keresése a kezelt segfaultok listájában
if cat "$SFDATES" | grep -q "^$LINE"
then
:
else
# a segfault dátumát menti a kezelt segfaultok közé
echo "$LINE" >> "$SFDATES"
# megakadályozza az többszöri újraindítást
if [ "$TREATED" = 'no' ]
then
# újraindítja a HylaFax servert
service hylafax restart
TREATED='yes'
fi
# a feldolgozás alatt álló segfault logjának kiválasztása
LOGMESSAGE="$(cat "$LOGMESSAGES" | grep "^$LINE .* $FILTER")"
# segfault feldolgozásának logolása
echo "$LOGMESSAGE" >> "$SFLOG"
# e-mail szövege
MESSAGE+="$LOGMESSAGE\n\n"
sleep 2
fi
done
# a faxmaster felhasználó értesítése
# - ha kell -
[ "$TREATED" = 'yes' ] && echo -e "$SUBJECT:\n$MESSAGE" | mail -s "$SUBJECT" "$MAILADDR"
# ez már a vég
Megoldásra vár még, hogy mi legyen akkor, ha minden újraindításnál elhasal a hylafax,
és jó lenne valami statisztika arról, hogy mely fax küldőknél szál el. Ez utóbbi azonban elég gáz, mert a legtöbb faxgép nincs (rendesen) beállítva. Jó esetben a faxszám , de sok esetben még ez sem.
Aztán előfordult már az is, hogy az nt-t, és az adsl szűrőt kellet kihúzni a telefonhálózatból, hogy egyáltalán legyen vonal.
no, mostmár lehet fikázni
:)
- apostroph3 blogja
- A hozzászóláshoz be kell jelentkezni
- 814 megtekintés