[gelöst]Laufendes Voip-Telefonat an console erkennen

meimi039

Mitglied
Mitglied seit
7 Jun 2005
Beiträge
323
Punkte für Reaktionen
0
Punkte
16
Das müsste doch bestimmt schon mal gefragt worden sein:

Wie kann ich in einem Shellscript erkennen, ob gerade telefoniert wird?
Ich möchte gerne einen reconnect ausführen - aber nur, wenn nicht gerade telefoniert wird.
Kann mich da mal jemand in die richtige Richtung schubsen?
 
Zuletzt bearbeitet:
Hallo,
ich weiss, dass FritzLoad eine solche Funktion hat, zB in der Version hier.
Musst du da mal in der fritzload.sh nach dem passenden Befehl suchen - dafür wäre allerdings auch nötig, das wget-binary aus dem archiv dort auf die box zu laden, da das box-interne wget "--post-data" nicht unterstützt ...
 
Ich habe nun folgendes Script erstellt:

Code:
WEBCM="/usr/www/html/cgi-bin/webcm"
webui_post_form() (
cd "$(dirname "$WEBCM")"
local POST_DATA="$1"
echo -n "$POST_DATA" |
REQUEST_METHOD="POST" \
REMOTE_ADDR="127.0.0.1" \
CONTENT_TYPE="application/x-www-form-urlencoded" \
CONTENT_LENGTH=${#POST_DATA} \
$WEBCM
)
urlencode() {
echo -e $(echo -n "$*" |
hexdump -v -e '/1 "!%02x"' |
sed '
s/!\(2[1ade]\|3[0-9]\|4[1-9a-f]\|5[0-9af]\|6[1-9a-f]\|7[0-9a]\)/\\x\1/g
s/!/%/g
')
}
webui_config() {
allcfgconv -C ar7 -c -o - |
sed -ne '/^webui[[:space:]]*{/,/^}/{
/=/{s/[[:space:]]*=[[:space:]]*/=/;s/^[[:space:]]*//;p}
}'
}
webui_password() {
local password=
eval "$(webui_config | grep '^password=')"
echo "$password"
}
webui_login() {
webui_post_form "login:command/password=$(urlencode "$(webui_password)")" \
> /dev/null
}
################################################################################
#####           Hier gehts los                                           #######
################################################################################

webui_login
wget "http://127.0.0.1/cgi-bin/webcm?getpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&errorpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&var%3Alang=de&var%3Apagename=home&var%3Aerrorpagename=home&var%3Amenu=home" -qO -  | grep 'case "sip.": state = "."'

Damit kann man erstmal experimentieren, welcher Status welche Bedeutung hat.
Soweit ich herausgefunden habe bedeutet Status "3", daß telefoniert wird. "2" bedeutet "registriert" und "1" heißt wohl "nicht registriert".
Man kann also bei Auffinden einer Zeile mit case "sip.": state = "3" eine Voip-Verbindung voraussetzen und entsprechend reagieren.

Danke Arne - der wget-Befehl hats bei mir klingeln lassen.
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
Tolle Sache! Danke auch für den Link auf den älteren, aber sehr nützlichen Thread.

Gibt's eine Möglichkeit, den FW Update-Vorgang automatisch abbrechen zu lassen, wenn gerade telefoniert wird?
Wie bzw. wo müsste man das einbauen, oder ist die Update-Routine fest in AVMs Hand und von uns gar nicht beeinflussbar?
 
Wenn Du Freetz nutzt, da ist doch auch ein FW Update drin. Da könnte man ansetzen...
 
Ok, ich habe mal dazu einen neuen Thread aufgemacht, damit Deiner hier nicht unnötig OT wird (sorry).
 
Leider bleibt echo "AT&V" | nc 127.0.0.1 1011 | grep "Port" im nc stehen und gibt die console frühestens nach 10s wieder frei.
Hat jemand dafür eine Lösung?
Code:
echo '#!/bin/sh
( if ( ! echo "AT&V" | nc -w 2 127.0.0.1 1011 |  grep "OFFHOOK" > /dev/null )  then
        echo "Mach nen reconnect" ;
    else
        echo "Jetzt bloß keinen reconnect";
fi )&
' > /var/tmp/myreconnect
chmod +x  /var/tmp/myreconnect

/var/tmp/myreconnect

Jörg
 
Zuletzt bearbeitet:
Damit habe ich ja nur den Prozess in den Hintergrund geschoben - also das Ergebnis auch. Mein Windows-Client wäre also schon wieder zu gange und 10s später kommts zum disconnect.
Da muß ich noch etwas nachbessern... mit nc von Boxen, auf denen der Prompt sofort zurückkommt, gehts auch nicht :confused:
 
Zuletzt bearbeitet:
Code:
if ( !  (echo "AT&V" | nc -w 2 127.0.0.1 1011 & )| sed '/NOSLIC/ q' | grep "OFFHOOK" > /dev/null ) then  echo "Mach nen reconnect" ; fi
 
:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:
Das is ja auch mal ne Idee! Einfach den Hänger verschieben!
Super! Ich glaube das kann ich integrieren...

Danke für den Vorschlag!
 
Hallo zusammen,

gibt es eine Möglichkeit den Port 1011 für das Lan zu öffnen (aber für das Wan geschlossen zu halten)? Ich würde gerne anstelle von 127.0.0.1, fritz.box einsetzen können um von außerhalb zu erkennen ob telefoniert wird.

Das pseudoimage von the-construct.com habe ich schon getestet, aber ich glaube das öffnet den Port nur für localhost, oder?

Gibt es da noch ne andere Möglichkeit?

Gruß,

garby
 
Zuletzt bearbeitet:
Du brauchst für das LAN gar keine Ports öffnen. Du musst aber die Schnittstelle aktivieren, dass der Telefon nicht nur auf 127.0.0.1 lauscht.

MfG Oliver
 
Ok, danke für die Antwort, aber wie mache ich das?
 
Also ich habe jetzt schon eine ganze Weile im Forum gesucht, aber leider nicht herausgefunden, wie ich den Telefon Daemon zusätzlich auf einer anderen IP lauschen lasse. Für einen Tipp wäre ich dankbar!

Gruß, garby
 
Ich habe es mal mit

telefon A192.168.0.254

und

telefon A0.0.0.0


versucht, aber habe immer folgende Fehlermeldung bekommen...

telefon: Socketfehler!
 
hast du ihn denn vorher beendet?
 
;-) Danke, das hat funktioniert!

Wo wird der denn mit 127.0.0.1 gestartet? debug.cfg?
Und hat man von außen Zugriff wenn ich den mit 0.0.0.0 starte?

Gruß,

Michael
 
Die debug.cfg ist normalerweise leer. Das Programm telefon wird aber gestartet, also kann es nicht aus der debug.cfg sein. Es muß also eine der AVM-Startdateien sein.

Dieses grep auf der Box sollte anzeigen, wo es gestartet wird.
Code:
grep telefon /etc/init.d/*
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.