Code: Alles auswählen
#/bin/sh
#################################################################
# Anzeigen der vom FLI4L-Router geloggten Anrufe/vbox-Nachrichten
# (Telmond muss aktiviert sein!)
# Autor: tetzlav
# last edit: 20/02/05
#################################################################
##############################config#############################
#IP-Adresse des FLI4L-Routers
IP="192.168.2.2" #Imond-PORT (default:5000, siehe "config/base.txt")
IMONDPORT="5000" #Imond-Passwort
IMONDPASS="********"
ADMIN_PASSWD="*******" #Imond-ADMIN-Passwort (wird gebraucht fuer /etc/phonebook)
#Vbox-Port, Anzahl der Vbox-User, Name, Telefon
VBOXPORT="20012"
VBOXUSER_N="" #wenn kein opt_vboxd leerlassen
VBOXUSER_1="USER1"
VBOXPASS_1="*******"
VBOXUSER_2="USER2"
VBOXPASS_2="*******"
#Systemvariablen
TMPDIR="/tmp"
SED_BIN="/bin/busybox sed"
NC_BIN="/bin/busybox nc"
#################ab hier nichts mehr veraendern##################
wget -q -O /dev/null http://127.0.0.1/control/message?popup=Einen%20Moment%20bitte...
cd $TMPDIR
date=`date +%Y%m%d`
value ()
{
set -f
eval x=$1
echo $x
set +f
}
#Telefonbuch holen, Substitutionsdatei erstllen
if [ ! -f $TMPDIR/phonebook ]
then
rcsim KEY_HOME > /dev/null
wget -q -O /dev/null http://127.0.0.1/control/message?popup=Telefonbuch%20wird%20kopiert...
{ echo "pass $IMONDPASS"; echo "send /etc/phonebook $ADMIN_PASSWD"; echo "quit"; } |
$NC_BIN $IP $IMONDPORT |
$SED_BIN '/^OK/d; /^ERR/d;' > $TMPDIR/phonebook
fi
if [ ! -f $TMPDIR/phonebook.sub ]
then
rcsim KEY_HOME > /dev/null
wget -q -O /dev/null http://127.0.0.1/control/message?popup=Telefonbuch%20wird%20erstellt...
$SED_BIN '/^#/d; /^[^=]*$/d; s/^/s|;/; s/=/;|;/; s/,[^,]*$//; s/$/;|g/' $TMPDIR/phonebook > $TMPDIR/phonebook.sub
fi
#Telmond-Logfile holen
rcsim KEY_HOME > /dev/null
wget -q -O /dev/null http://127.0.0.1/control/message?popup=Anruferliste%20wird%20erstellt...
{ echo "pass $IMONDPASS"; echo "telmond-log-file"; echo "quit"; } |
$NC_BIN $IP $IMONDPORT | $SED_BIN 's/.$//; /^OK/ d; s/$/ /; s/ \+/;/g; s/\/\+//g;' | grep $date > $TMPDIR/0.telmonctmp
rcsim KEY_HOME > /dev/null
wget -q -O /dev/null http://127.0.0.1/control/message?popup=Nummern%20werden%20durch%20Namen%20ersetzt...
echo "Anrufe%3A%0A%0A" > $TMPDIR/1.telmonctmp
$SED_BIN -f $TMPDIR/phonebook.sub $TMPDIR/0.telmonctmp | $SED_BIN "s/^;$date//; s/;$/)%0A/; s/;/%20/; s/;/Uhr%3A%20/; s/;/%20(->/; s/:[0-9]\{2\}U/U/;" >> $TMPDIR/1.telmonctmp
#VboxInfo an Message anhängen
if [ ! "$VBOXUSER_N" = "" ]
then
i=1
echo "%20%0ANachrichten%3A%0A%0A" >> $TMPDIR/1.telmonctmp
while [ $i -le "$VBOXUSER_N" ]
do
USERNAME=`value '$VBOXUSER_'$i`
PASSWD=`value '$VBOXPASS_'$i`
rcsim KEY_HOME > /dev/null
wget -q -O /dev/null http://127.0.0.1/control/message?popup=Nachrichten%20fuer%20$USERNAME%20werden%20ueberprueft...
{ echo "login $USERNAME $PASSWD"; echo "count"; echo "quit"; } |
$NC_BIN $IP $VBOXPORT > $TMPDIR/vbox_$USERNAME.telmonctmp
VBOXCOUNT=`cat $TMPDIR/vbox_$USERNAME.telmonctmp | grep ^181 | $SED_BIN 's/^181 //; s/ .*$//'`
echo "%20$USERNAME%3A%20$VBOXCOUNT%0A" >> $TMPDIR/1.telmonctmp
i=`expr $i + 1`
done
fi
#Dateiformat anpassen
$SED_BIN '$!{;H;d;};H;x;s/\n//g; s/:/%3A/g; s/ /%20/g;' $TMPDIR/1.telmonctmp > $TMPDIR/2.telmonctmp
rcsim KEY_HOME > /dev/null
wget -q -O /dev/null http://127.0.0.1/control/message?nmsg=`cat $TMPDIR/2.telmonctmp`
rm $TMPDIR/*.telmonctmp
exit 0
Code: Alles auswählen
#/bin/sh
/var/plugins/telmonc_start.sh &
exit 0
Jedoch würde ich sehr gerne noch anzeigen lassen von wem und zu welcher Uhrzeit eine Nachricht hinterlassen wurde. Dazu muss ich jedoch das UNIX-Timestamp-Format (Sekunden seit 1.1.1970) in ein lesbares Datum umrechnen. Wenn ich das mit dieser Funktion mache dauert mir das auf der D-Box einfach zu lange. gibt es eine Möglichkeit das mit date zu erledigen?
Code: Alles auswählen
#Timestampformat umrechnen
cor=1 #Zeitverschiebung
timestamp ()
{
SECS=$1
i=1970
while [ $SECS -gt 31536000 ]
do
if [ `expr $i % 4` -eq 0 ]
then
SECS=`expr $SECS - 31622400`
else
SECS=`expr $SECS - 31536000`
fi
i=`expr $i + 1`
done
YEAR=$i
MTH_0=31
if [ `expr $YEAR % 4` -eq 0 ]
then
MTH_1=29
else
MTH_2=31
MTH_3=30
MTH_4=31
MTH_5=30
MTH_6=31
MTH_7=31
MTH_8=30
MTH_9=31
MTH_10=30
MTH_11=31
fi
i=0
while [ $SECS -gt $(expr `value '$MTH_'$i` \* 86400) ]
do
SECS=$(expr $SECS - `value '$MTH_'$i` \* 86400)
i=`expr $i + 1`
done
MONTH=`expr $i + 1`
i=1
while [ $SECS -gt 86400 ]
do
SECS=`expr $SECS - 86400`
i=`expr $i + 1`
done
DAY=$i
i=0
while [ $SECS -gt 3600 ]
do
SECS=`expr $SECS - 3600`
i=`expr $i + 1`
done
HOUR=`expr $i + $cor`
i=0
while [ $SECS -ge 60 ]
do
SECS=`expr $SECS - 60`
i=`expr $i + 1`
done
MINUTES=$i
echo $YEAR-$MONTH-$DAY-$HOUR-$MINUTES-$SECS
}
@Zwen, Chakazulu, [oderwerdaskann]
wenn ihr ein wenig Zeit hättet auch das mal anzuschauen, ich wäre sehr dankbar!
Wer generell noch Verbesserungsvorschläge hat darf das gerne äußern. Ich weiß ja nicht wie viele von euch das Gespann D-Box/Fli4l zu Hause werkeln lassen, aber bei mir arbeiten die zwei optimal zusammen...
Gruß
tetzlav