Eigene Firmwareänderungen per Skript

hi,

bei beiden varianten erfolgt keine ausgabe auf der dream.


cupido
 
Einen habe ich noch:
dreammessage 192.168.0.99 111 222 333 dreambox "Text%20%20Text2%0AText3"

Könnte sein, dass die Dreambox keine "Leerzeichen" im Text mag.
Dann könnte man diese durch "%20" ersetzten.

Haveaniceday
 
jo, der geht.

ausgabe auf dream:

text text2 text3

Console Ausgaben auf dieses Terminal umgelenkt
~ # . /usr/bin/callmonitor.out
~ # dreammessage 192.168.0.99 111 222 333 dreambox "Text%20%20Text2%0AText3"
HTTP/1.0 200 OK
Connection: close
Content-Length: 3

+ok~ #

cupido
 
OK, das kommt dann beim nächsten Mal mit rein.

Haveaniceday

Für Selberbauer in ~/mod-0.53/add_on/callmonitor.out alle Strings ersetzten:

raus: "Anruf an $CALLED %0A%0A von $MSISDN %0A $CALLER"

rein: "Anruf%20an%20$CALLED%20%0A%0A%20von%20$MSISDN%20%0A%20$CALLER"

:idea:

Edit:Nachdenken... [highlight=grey:62aa2852cb]Muss auch noch geschehen: in den "Namen/Texten" die Leerzeichen ersetzten.[/highlight:62aa2852cb]
 
besteht eigenltich die Möglichkeit bei

www.somwhere.net ownmessage www.somewhere.net EOP
# Immer auf Kommentar lassen, damit kein Syntaxfehler in der Shell kommt.
#CALLOWNGET=/call.php?nr=

irgendwie einzuarbeiten, über welche nummer oder sip-anbieter angerufen wurde????
 
Zur Zeit nicht. Die Variablen aus CALLOWNGET würden nicht
ausgewertet werden.

Haveaniceday

Edit: bin mir nicht ganz sicher, schaue noch mal..
Edit2: Nee sollte nicht gehen.
 
schade,

ich hoffe das ist nicht der falsche thread:

würde es mit einer Änderung der callmonitor.out gehen?

leider verstehe ich Definition von MESSAGE :

MESSAGE=${6:-"$MSISDN"}

nicht. eigentlich müsste doch nur noch ein "&an=CALLED" dahin (wobei ich nicht weiß wie es genau geht, kann nur php...
 
Hi frage,

MESSAGE=${6:-"$MSISDN"}
Die Variable "MESSAGE" wird auf den 6.ten Übergabewert ($6), wenn vorhanden, gesetzt. Sonst auf die Variable "$MSISDN".
Die Funktion wird nicht mit einem 6. Parameter gefüttert => MSISDN wird genommen.

Im Moment geht es nicht weil: (grob gesagt )
C=WERT A='$C' B="$A" => A hat den Inhalt $C und nicht "Wert" => B kriegt auch nur den Inhalt $C und nicht den Inhalt der Variable.

Haveaniceday.

PS: Bin kurz angebunden und hoffe die Erklärung ist nicht zu verwirrend. ;-)
Edit: [s:a5287f2528] Offline für heute...[/s:a5287f2528]
 
haveaniceday schrieb:
C=WERT A='$C' B="$A" => A hat den Inhalt $C und nicht "Wert" => B kriegt auch nur den Inhalt $C und nicht den Inhalt der Variable.

... und hoffe die Erklärung ist nicht zu verwirrend.

Neeeiin, überhaupt nicht :?

crusader
 
Nur so für UNIX Fans. Meine derzeitigen Konfigurationen, bzw. die Auswertungen sehen grausam aus. Werde das mal auf folgendes umstellen:

cat /var/flash/debug.cfg | sed -e "/^CALLINVERS=/!d" -e 's/[^=]*=//'

Gibt bei "CALLINVERS=4" z.B. nur die 4 aus, und unterdrückt den Rest der Datei..

Findet alles was am Zeilenanfang (^) mit CALLINVERS anfängt. Alles hinter dem "=" wird ausgegeben, auch wenn hinter dem ersten "=" weitere "=" folgen.
Mal sehen ob die Skripte dann etwas eleganter aussehen.

Interpretation:
/^CALLINVERS/!d bedeutet /was gefunden/, ! (verneint), d ( delete, nicht weiter bearbeiten )
s/[^=]*=// bedeutet: s (ersetze), </: Trenner (könnte z.b. auch "#" sein, wenn man mit Pfaden arbeiten will> , [^=]* nicht (^) = beliebig oft, dann ein "=", Trenner (/), ersetzten mit "nix", Trenner (/)

Hoffe das interessiert jemanden ;-) . "info sed" auf einem Linux System zeigt noch mehr an Info zu "sed". Diese Art Befehle gehen übrigens meistens auch in der Komandozeile von vi. Die Kommandozeile erreicht man mit ":".

Haveaniceday
 
Hoffe das interessiert jemanden
Doch.
"man sed" ergibt nämlich die übliche UNIX-Katastrophe: man's sind für Leute geschrieben, die schon wissen, was auf der Seite eigentlich erklärt werden soll.
Bei "info" hab ich immer auf der dritten Ebene vergessen, wie man zurück kommt -> nur was für Masochisten.

Zurück zum Thema: mod-53
'yac' mit festem IP-Eintrag läuft.
Bisher hatte ich allerdings in der listener-Liste einfach den Namen aus der multid.leases eingetragen. Das geht jetzt nicht mehr, da nc den host dann über den Namen erreichen will, was bei mir nicht geht.

Wieso sucht das Script nach Ziffer.Ziffer.Name in multid.leases ? Ich hab da keine Ziffern, nur den Rechnernamen in Anführungsstrichen:
Code:
lease 00:xx:xx:xx:xx:xx 192.168.178.20 154800 "hostname" 0100040xxxxx
Ansonsten: Bin begeistert!! super-aufgeräumte Scripte, kann man was lernen.
Die zusätzlichen Optionen (z.B.: "called"-Feld mit ausgeben) hatte ich tatsächlich auf meiner Wunschliste, hab mich bloß nicht getraut, das vorzuschlagen. Klasse!

Gruß
crusader
 
Hi crusader,

crusader schrieb:
'yac' mit festem IP-Eintrag läuft.
Bisher hatte ich allerdings in der listener-Liste einfach den Namen aus der multid.leases eingetragen. Das geht jetzt nicht mehr, da nc den host dann über den Namen erreichen will, was bei mir nicht geht.
Die Idee die mir zugetragen wurde ist z.B. "yac 192.168.178" zu nutzen um
allen in dem IP-Bereich die Daten zu senden.
Eigentlich sollte über " awk '{ print $3 }'" das dritte Feld => 192.168.178.* genommen werden.
Hmm, muss ich mir noch mal weniger "schläfrig" anschauen.

crusader schrieb:
Wieso sucht das Script nach Ziffer.Ziffer.Name in multid.leases ? Ich hab da keine Ziffern, nur den Rechnernamen in Anführungsstrichen:
Code:
lease 00:xx:xx:xx:xx:xx 192.168.178.20 154800 "hostname" 0100040xxxxx
[/quote]
Ziffer.Ziffer.* soll für einen Adressbereich gehen. Reguläre Namen sollten aufgelöst werden.

[quote=crusader]
Ansonsten: Bin begeistert!!  super-aufgeräumte Scripte, kann man was lernen.
Die zusätzlichen Optionen (z.B.: "called"-Feld mit ausgeben) hatte ich tatsächlich auf meiner Wunschliste, hab mich bloß nicht getraut, das vorzuschlagen. Klasse!
[/quote]

Der Dank geht ganz an den Thread für das super callmonitor-Skript geht an max-1968 und Mitstreiter aus Thread  8962 
[url]http://www.ip-phone-forum.de/forum/viewtopic.php?t=8962[/url]
Hab das Ganze nur konfigurierbar gemacht und integriert. Und als DBOX-Nutzer kann man sich jetzt beim Fernsehen 
und Anrufer Kennung  überlegen ob man wirklich die Oma oder die Firma sprechen will :oops:  *grins* 

Mal sehen was noch so alles mit der Box geht. :)  [jammer] wenn nur nicht die Platznot wäre.[/jammer] Aber mal sehen was die 
neuen Boxen von AVM haben. 8 MB oder mehr wären echt mein Wunsch. Mal sehen was so auf dem Cebit Stand gezeigt wird.
Viele Grüße,

Haveanicenight

PS: callmonitor.out ist extra so das andere Skripts dieses mit nutzen können. Habt ihr gute Ideen die ( keinen Platz brauchen ;-) )  ?
 
@crusader: Schau mal bei http://www.thomashertweck.de/sedawk.html vorbei, vielleicht gefällt Dir das besser...

@haveaniceday: Das mit dem extra Skript hattest Du falsch verstanden... Ich wollte den gesamten Ausgabeteil (inklusive der Schleife über die listener) als extra Skript haben, so dass das an alle Clients ausgibt. Am Wochenende mach ich Dir mal nen Vorschlag.

Du kannst die dreambox Funktionalität übrigens mit der dbox testen wenn Du Enigma statt Neutrino nutzt... Glaub ich zumindest ;-)
 
haveaniceday schrieb:
cat /var/flash/debug.cfg | sed -e "/^CALLINVERS=/!d" -e 's/[^=]*=//'
Oder so?: cat /var/flash/debug.cfg | sed -e "/^CALLINVERS/!d" -e 's/[^=]*=|[ \t]//'
(Falls jemand beim Editieren der debug.cfg Leerzeichen oder Tabs einfügt)

@Max: Danke, guter Tipp ! Mal sehn, ob ichs verstanden hab.

Die Idee die mir zugetragen wurde ist z.B. "yac 192.168.178" zu nutzen um allen in dem IP-Bereich die Daten zu senden.
Ach so.
Ja, das funktioniert.
Nur Namensauflösung läuft jetzt halt nicht mehr über multid.leases, sondern über DNS (hat mir andersrum besser gefallen).

crusader
 
So jetzt auch nochmal ne kurze Frage von mir.

Seh ich das richtig das Du seit der mod53 den dropbear Port in die debug.cfg mit reingenommen hast? Konkret geht es um diese beiden Zeilen

DROPPORT='22'
export DROPPORT

Demnach müsste doch der dropbear auf einem anderen Port starten wenn ich in der debug.cfg einen anderen Wert wie 22 einstelle.

Also konkretes Beispiel. dropbear soll auf Port 12345 laufen, also erstmal in der /var/flash/debug.cfg mit dem vi dies eintragen.

DROPPORT='12345'
export DROPPORT


Um von außen wieder auf den dropbear zu kommen müsste ich dann noch folgendes in der /var/flash/ar7.cfg eintragen:

"tcp 0.0.0.0:12345 0.0.0.0:12345",

Dann noch ein reboot auf der shell eingetippt und das müsste es dann gewesen sein, oder?

Den Port holst Du Dir dann in deiner modstart ab und zwar mit der folgenden Zeilen

then
killall dropbear 2>/dev/null
/usr/sbin/dropbear -p $DROPPORT
fi


Korrigiert mich bitte, wenn ich da noch einen Denkfehler habe.
 
Hi Eazy,

ja, der Port für dropbear ist jetzt konfigurierbar. ( Warst du das mit der Anfrage, hatte die Anfrage im Forum nicht mehr gefunden )
DROPPORT=12345

Damit du den Port erreichen kannst sollten die Werte in ar7.cfg "gleich" sein. ( Weiß nicht was sonst passiert )
"tcp 0.0.0.0:12345 0.0.0.0:12345",

Ausserdem achte auf die richtige Stelle in ar7.cfg ! Es gibt unterschiedliche
Bereiche mit Proteinstellungen. In den "Readmes" ist die Stelle aber
beschrieben.

Haveaniceday
 
Yop, yop. Ich war des damals mit der Anfrage. Danke für deine Implementation. Werd ich gleich mal testen. Des mit der ar7.cfg is mir bekannt. Ich trag einfach den alten Eintrag, wo ich den SSH auf Port 22 hatte laufen lassen mit dem neuen Port ein. Ist ja ziemlich zum Schluss der ar7.cfg. Aber nochmal Danke für den Hinweis.

Bei meinem obigen Thread hatte ich mich doch glatt vertippselt(mittlerweilen wieder korigiert). Ich werde natürlich die beiden Ports gleich lassen, also
"tcp 0.0.0.0:12345 0.0.0.0:12345",
 
@haveaniceday

Bin bei meiner Testerei noch auf 'n paar Schönheitsfehler für die yac-Variante gestoßen:

Der Text "Rufnummer unterdrückt bzw. kein CLIP" ist für den Windows-client etwas zu lang (max 23 Zeichen), außerdem sind die Umlaute nicht darstellbar, da das Skript in UTF-8 kodiert ist. (sieht dann so aus: Rufnummer unterdrückt ).
Der yac-listener erwartet den Namen direkt hinter @CALL, also besser:
MESSAGE=${6:-"@CALL$CALLER~$MSISDN"}

Der yac-listener zeigt den Zeilentrenner mit an. Kann man verhindern , wenn man 'echo -n' verwendet. Bei der Eingabeumleitung weiß ich nicht, wie's geht.

Noch 'n Wunsch:
Könnte man nicht bei der Option 'eigene yac-Message' auch den Port als Parameter übergeben ?
Dann könnte man parallel zur Anruferkennung z.B. noch voipd-Meldungen auf nem anderen Port übertragen.

Gruß
crusader
 
Crusader,
die Problemchen mit yac sind bekannt, ignorier ich aber weiterhin. Wer eine Lösung haben möchte kann die gerne ins mod einbauen...
Mittlerweile würde ich es aber vorziehen die "@" Besonderheit des yac nicht zu nutzen sondern stattdessen die Message komplett als "plain text" zu übergeben. Ich wollte haveaniceday eh noch eine etwas geänderte Variante zukommen lassen, wo es ein separates Skript "message" oder so gibt das dann den einen übergebenen Parameter an alle clients ausgbibt. Man könnte dann ein anderes Skript auf der Konsole lauschen lassen und auf die ganzen daemon Meldungen reagieren lassen. BTW, wie krieg ich die "telefon" Meldungen auf die Konsole ?
Bevor ich da aber was mache will ich verstehen wie die webgui funktioniert... Siehe mein anderer Thread :)
Max
 
wie krieg ich die "telefon" Meldungen auf die Konsole ?
Du meinst, "telefon"-Ausgaben gleichzeitig auf Konsole und auf den callmonitor?
Das geht z.B. so:
Code:
mkfifo /var/tmp/tel.fifo
telefon | tee /var/tmp/tel.fifo &
callmonitor.sh < /var/tmp/tel.fifo &

crusader
 
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.