Hallo zusammen,
ich habe die ISDN-Geschichte fertig und poste Sie hier schon einmal, bevor ich am Montag meinen online-Auftritt ändere.
Ich möchte gerne auf dem VDR sehen, wer mich anruft!
apt-get install isdnutils
Mal sehen, wie es weitergeht.
Ich lade keine firmware!!
da ich nicht wählen will, gebe ich keine fnfo zum isp
bischen mit modconf spielen
modconf hisax
(Fehlermeldungen ignorieren!!)
scrollen, bis die Zeile
kernel/drivers(isdn(hisax
kommt, dann enter.
Dann auf Zeile
hisax
gehen und ENTER
Als nächstes müssen die optionen eingegeben werden:
type=27 protocol=2 id=hisax_driver
(Der Type war für meine AVM Fritz Karte)
Dann alles bestätigen, und die Treiber sollten installiert sein.
update-modules starten
Trägt Daten aus /etc/modutils in /etc/modules.conf ein.
Wenn man alles richtig gemacht hat, dann sollte ein
tail -f /var/log/messages
das Logfile zeigen und wenn dann noch das ISDN-Kabel richtig steckt und man sich selber anruft, dann erscheint in dem Logfile die entsprechenden infos.
Mar 6 11:15:46 hpd-vdr kernel: isdn_net: call from 1234568,1,0 -> 55523456
Mar 6 11:15:46 hpd-vdr kernel: isdn_net: call from 1234568,1,0 -> 0 55523456 ignored
Mar 6 11:15:46 hpd-vdr kernel: isdn_tty: call from 1234568,1,0 -> 55523456 ignored
(Die Nummern habe ich geändert!!)
Ganz wichtig!!!!
in der Datei /etc/isdn/device.ippp0 eine Zeile ändern
DIALMODE=off
Das rauszufinden hat mich 3 Stunden und rund 100 reboots gekostet, da das doofe ding immer beim booten eine isdn verbindung ins netz aufbauen wollte!
reboot tut immer gut!
OK, da die /var/log/messages alles richtig anzeigt, muessen jetzt noch ein paar Kleinigkeiten erstellt werden.
1. Eine Telfonbuchdatei
Ich habe die Datei nach /etc/vdr gelegt, da hier alle Konfig-Files liegen.
vi /etv/vdr/telefonbuch
# Telefonbuch fuer den VDR
# Format
# NAME : NUMMER
Home : 123456789
Ute Handy : 546843213
Gaby Handy : 321564875
(Hier sollten alle Einträge hinein)
2. Das Auswerteprogramm
Das Programm habe ich nach /usr/share/vdr gelegt, da es hier Sinn macht
vi /usr/share/vdr/isdn2htpc
# Das Programm bekommt 2 Parameter
# 1. Die Nummer des Anrufers
# 2. Die angerufene Nummer
# Mit der Nummer des Anrufers wird aus der Datei /etc/vdr/telefonbuch der Name des Anrufers geholt.
# Wenn keine Name zu der Nummer gespeichert ist, dann wird nur die Nummer angezeigt.
# Sollte überhaupt keine Nummer übertragen werden, dann zeige ich als Name "Anonym" .
#
# Wenn man mehrere Nummern konfiguriert hat (MSN), kann man diesen direkt einen Namen zuordnen
#
# Bei mir kommt ein anonymer Anrufer immer mit der 0, folglich
# muss das Script leicht modifiziert werden.
#
NUMMER1=$1
NUMMER2=$2
if [ "$NUMMER1" = "0" ]
then
ANRUFER="Anonym"
else
ANRUFER=`grep $NUMMER1 /etc/vdr/telefonbuch | cut -d ":" -f 1 `
if [ "$ANRUFER" = "" ]
then
ANRUFER=$1
fi
fi
GERUFEN=$NUMMER2
if [ "$NUMMER2" -eq "1234567" ]
then
GERUFEN="Home"
fi
if [ "$NUMMER2" -eq "1234568" ]
then
GERUFEN="Fax"
fi
if [ "$NUMMER2" -eq "1234569" ]
then
GERUFEN="Tochter"
fi
count=0
until [ $count -eq 5 ]
do
/usr/share/vdr/svdrpsend.pl MESG Anruf von: $ANRUFER an $GERUFEN
sleep 2
let count=$count+1
done
TESTEN!!
Mit /usr/share/vdr/isdn2htpc 123456789 1234567
Sollte folgende Message im Bildschirm erscheinen:
Anruf von Home an Home
/usr/share/vdr/isdn2htpc 123456789 1234569 bringt dann
Anruf von Home an Tochter
3. Das Programm zum Überwachen
vi /usr/share/vdr/check_messages
#!/bin/sh
# Dieses Programm ueperfrueft kontinuierlich die /var/log/messages auf eingehende Telefonanrufe
# Dies passiert mit Hilfe von "tail", "grep" und dem guten alten "awk"
#
while :
do
tail -1 /var/log/messages | grep 'isdn_tty' | awk '{system("/usr/share/vdr/isdn2htpc "$9" "$11)}'
sleep 1
done
4. Den ganzen Kram in VDR einbauen
OK, ich möchte als erstes die Möglichkeit haben, die Anrufueberwachung über den VDR selber zu steuern. Damit das funzt, muss eine entsprechende Kommando-Datei in /etc/vdr erstellt werden
vi /etc/vdr/commands.anrufueberwachung.conf
Anrufueberwachung : echo "no function"
-Show Status : /usr/bin/status_isdn.sh
-Stop Anrufueberwachung : /etc/init.d/anrufueberwachung stop >/dev/null 2>&1
-Start Anrufueberwachung : /etc/init.d/anrufueberwachung start >/dev/null 2>&1
Wie man der Kommando-Datei entnehmen kann, fehlen noch mindestens 2 weitere Files:
vi /usr/bin/status_isdn.sh
#!/bin/sh
# Version: 1.0
# Author: Hans-Peter Doelle hpdoelle@mac.com
STATUS=`ps aux | grep anruf`
if [ "$STATUS" = "" ]
then
echo "Zur Zeit laeuft die Ueberwachung nicht!"
else
echo "Die Anrufueberwachung ist aktiv!"
echo $STATUS
fi
Gut, den Status kann man sich schon anzeigen lassen, was noch fehlt ist das Start-Stop-Script unter init.d
vi /etc/init.d/anrufueberwachung
#! /bin/bash
#
#set -x
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Anrufueberwachung"
DAEMON="/usr/bin/anrufueberwachung.sh"
test -x $DAEMON exit 0
case "$1" in
start)
echo -n "Starting $DESC"
$DAEMON &
echo "."
;;
stop)
echo -n "Stopping $DESC"
killall anrufueberwachung.sh
echo "."
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
# rc_exit
Wir nähern uns dem Ziel, es fehlt nur noch ein Script und ein paar Links.
vi /usr/bin/anrufueberwachung.sh
#!/bin/sh
#set -x
SLEEP_TIME=1
while true; do
tail -1 /var/log/messages | grep 'isdn_tty' | awk '{system("/usr/share/vdr/isdn2htpc "$9" "$11)}'
sleep $SLEEP_TIME
done
Wunderbar, nach einem "/etc/init.d/vdr restart" steht unter Befehle nun der Punkt "Anrufueberwachung". Dieser öffnet ein weiteres Menu, und hier kann man sich den Status anzeigen lassen und die Ueberwachung Starten bzw. Stoppen.
Damit die ganze Geschichte letztendlich auch beim Neustart des Rechners automatisch startet, legen wir noch ein paar Links an.
Anrufueberwachung stoppen:
ln -s /etc/init.d/anrufueberwachung /etc/rc0.d/K20anrufueberwachung
Anrufueberwachung starten:
ln -s /etc/init.d/anrufueberwachung /etc/rc3.d/S99anrufueberwachung
(Wenn jemand in einem anderen Runlevel als 3 startet, muss die Zeile entsprechend angepasst werden)
Wie bekomme ich raus, welchen Runlevel mein System benutzt?
more /etc/inittab
Ziemlich oben steht
# The default runleven.
id:3:initdefault
(Bei mir war es ursprünglich die 2, aber Runlevel 3 war mir lieber)
OK, das wars.
Es hatte sich leider ein kleiner Fehler eingeschlichen, der noch korrigiert werden musste.
(In der Datei isdn2htpc)