/var/.voipd_statsimple lesen

frater

Mitglied
Mitglied seit
23 Nov 2008
Beiträge
455
Punkte für Reaktionen
3
Punkte
18
Mit Zabbix möchte ich gerne die /var/.voipd_statsimple lesen...
Ich will gerne realtime sehen ob alle VoIP-accounts angemeldet sind...

Mit bash, awk und grep kenne ich mich aus aber es ist kein normaler Datei.
Da gibts, denke ich, ein spezielles program oder weise zum auslesen.....

Kann jemand mir helfen?
 
Moin
Mal schaun....
Da hast du wohl Recht.
Filter einsetzen, empfehle ich dir.
Ein einfaches wäre z.B.: cat /var/.voipd_statsimple | grep 1und1
Deiner Fantasie sind dabei keine Grenzen auferlegt.
Und wenn du Glück hast, ja dann meldet sich hier noch einer von der regulären Ausdrucks Front. :rolleyes:
Die machen dann so komische Sachen wie das hier: cat /var/.voipd_statsimple | grep -E '^[0-9].*@'
...sieht aber viel besser aus. ;)

PS: Ich seh da nur Anrufer drin.
 
Zuletzt bearbeitet:
Ich glaube nicht das in dieser Datei die Information steht den ich suche.
Wo?

Wenn ich suche nach accounts gibt es nur hier:

# find /var -type f | xargs grep -il 888
/var/.ar7events
/var/.voipd_statsimple
 
Weiß jemand wie die AVM-webif die SIP-Info bekommt?
Ich möchte ganz gerne dieser Info mittels Zabbix durchsenden und damit besseres Support bieten.
Wie gesagt is grep, awk kein Problem...

Vielleicht muss ich es mittels curl oder wget machen....
 
Vermutlich mittels "ctlmgr_ctl r sip status/...". Müsste man genauer ansehen, wie das genau "weiter geht"
 
Code:
ERG=$(ctlmgr_ctl r sip settings/sip/list)
echo $ERG
...liefert sip0
Und die anderen 2 Nummern?
Wie kommt man an "activated" ?

aus dem fon_num_list.lua Quelltext
Code:
["sip:settings/sip/list(activated,displayname,registrar,outboundproxy,providername,ID,gui_readonly)"] = {
    [1] = {
      ["ID"] = "0", 
      ["_node"] = "sip0", 
      ["activated"] = "1", 
      ["displayname"] = "XXXXXXXX", 
      ["gui_readonly"] = "0", 
      ["outboundproxy"] = "", 
      ["providername"] = "", 
      ["registrar"] = "1und1.de"
    }, 
    [2] = {
      ["ID"] = "1", 
      ["_node"] = "sip1", 
      ["activated"] = "1", 
      ["displayname"] = "XXXXXX", 
      ["gui_readonly"] = "0", 
      ["outboundproxy"] = "", 
      ["providername"] = "", 
      ["registrar"] = "1und1.de"
    }, 
    [3] = {
      ["ID"] = "2", 
      ["_node"] = "sip2", 
      ["activated"] = "1", 
      ["displayname"] = "XXXXXXXX", 
      ["gui_readonly"] = "0", 
      ["outboundproxy"] = "", 
      ["providername"] = "", 
      ["registrar"] = "1und1.de"
    }
  },
 
Thanks Maxmuster...
I Googled a bit and found this page.... http://www.wehavemorefun.de/fritzbox/Sip
I can take it from here and will come back and try to post a good one liner or script....

ctlmgr_ctl r sip settings/sip0/activated
ctlmgr_ctl r sip settings/sip0/registrar_reachability
 
# cat sip.reachable
Code:
#!/bin/sh
n=0 ; reachable=0
while [ $n -le 9 ] ; do
  [ `ctlmgr_ctl r sip settings/sip${n}/registrar_reachability` -gt 95 ] 2>/dev/null && let reachable+=1
  let n+=1
done
echo ${reachable}
# cat sip.active
Code:
#!/bin/sh
n=0 ; active=0
while [ $n -le 9 ] ; do
  [ "`ctlmgr_ctl r sip settings/sip${n}/activated`" = "1" ] && let active+=1
  let n+=1
done
echo ${active}

# cat sip.configured
Code:
#!/bin/sh
n=0 ; configured=0
while [ $n -le 9 ] ; do
  [ -z "`ctlmgr_ctl r sip settings/sip${n}/registrar`" ] || let configured+=1
  let n+=1
done
echo ${configured}

# cat sip.reachability
Code:
#!/bin/sh
n=0 ; active=0 ; reachability=0
while [ $n -le 9 ] ; do
  if [ "`ctlmgr_ctl r sip settings/sip${n}/activated`" = "1" ] ; then
    let reachability+=`ctlmgr_ctl r sip settings/sip${n}/registrar_reachability`
    let active+=1
  fi
  let n+=1
done
[ ${active} -eq 0 ] && active=1                                 # prevent division by zero
echo ${reachability} ${active} | awk '{printf"%.0f\n", $1 / $2}'

# cat sip.info
Code:
#!/bin/sh
n=0
TMP=/var/sipinfo
echo -n ''>${TMP}
while [ $n -le 9 ] ; do
  REGISTRAR="`ctlmgr_ctl r sip settings/sip${n}/registrar`"
  if [ -n "${REGISTRAR}" ] ; then
    USERNAME=`ctlmgr_ctl r sip settings/sip${n}/username`
    REACHABLE=`ctlmgr_ctl r sip settings/sip${n}/registrar_reachability`
    if [ ! "`ctlmgr_ctl r sip settings/sip${n}/activated`" = "1" ] ; then
      echo "${REGISTRAR} / ${USERNAME} is NOT active">>${TMP}
    elif [ "${REACHABLE}" = "0" ] ; then
      echo "${REGISTRAR} / ${USERNAME} is NOT working">>${TMP}
    elif [ "${REACHABLE}" = "100" ] ; then
      echo "${REGISTRAR} / ${USERNAME} is fully working">>${TMP}
    else
      echo "${REGISTRAR} / ${USERNAME} is only working ${REACHABLE}%">>${TMP}
    fi
  fi
  let n+=1
done
cat ${TMP}
 
Zuletzt bearbeitet:
This is part of my zabbix_agentd.conf

Thanks to this new knowledge about ctlmgr_ctl I can now get all kind of parameters from the Fritzbox.
Finally I have SNR back (I used to do this reading the pseudo-file /proc/avalanche/avsar_modem_stats on the 7270)

I have those different entries for dsl, but I can better call the item "avm.ctrlmgr" from the Zabbix server and ask the question in Zabbix.
One probably needs to know more about Zabbix to understand this post.

I can recommend it.
The agent is selectable using "make menuconfig", but it needs some more tinkering than that.
For one I need sudo and a /etc/sudoers.d/zabbix file.
Also busybox needs to use /etc/busybox.conf so I can add the sticky bit to "ping"

I do all this using my own fw_mod_custom script.

I would like to help to put this into the mainstream Freetz.
It's too complex to write a how-to


Code:
####### USER-DEFINED MONITORED PARAMETERS #######
# Format: UserParameter=<key>,<shell command>
# Note that shell command must not return empty string or EOL only
UserParameter=net.ping[*], ping -c1 -W1 $1 2>/dev/null | grep -c 'bytes f'

UserParameter=net.ipv4.cksum,ifconfig | grep -B1 ' inet ' | md5sum | tr -cd 0-9 | cut -b1-10
UserParameter=net.ipv4,ifconfig | grep -B1 ' inet ' | grep -oE '(^[a-z0-9:]+|addr:[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)'
UserParameter=net.if.down[*],ifconfig $1 >/dev/null 2>&1 ; echo $?

UserParameter=listenport[*], netstat -ln | grep -c ':$1 '
UserParameter=net.netstat.cksum, netstat -lnt 2>/dev/null | sort | md5sum | tr -cd 0-9 | cut -b1-10
UserParameter=net.netstat, netstat -lnt 2>/dev/null | sort

# Freetz ctlmgr
UserParameter=avm.ctrlmgr[*], sudo ctlmgr_ctl r $1 $2

# Freetz SIP
UserParameter=sip.active,     sudo /sbin/sip.active
UserParameter=sip.reachable,  sudo /sbin/sip.reachable
UserParameter=sip.configured, sudo /sbin/sip.configured

# Freetz DSL
UserParameter=dsl.upstream, grep -m1 '^speed ' /var/showdsldstat 2>/dev/null | awk '{print $2}' | awk -F/ '{print $2/1000}'
UserParameter=dsl.downstream, grep -m1 '^speed ' /var/showdsldstat 2>/dev/null | awk '{print $2}' | awk -F/ '{print $1/1000}'

#UserParameter=dsl.upstream, sudo ctlmgr_ctl r sar status/dsl_us_rate
#UserParameter=dsl.downstream, sudo ctlmgr_ctl r sar status/dsl_ds_rate

UserParameter=dsl.upsnr, sudo ctlmgr_ctl r sar status/us_margin
UserParameter=dsl.downsnr, sudo ctlmgr_ctl r sar status/ds_margin
UserParameter=dsl.upcrc, sudo ctlmgr_ctl r sar status/us_crc
UserParameter=dsl.downcrc, sudo ctlmgr_ctl r sar status/ds_crc
UserParameter=dsl.los, sudo ctlmgr_ctl r sar status/ds_los
UserParameter=saturation.tx, adsl.saturation tx
UserParameter=saturation.rx, adsl.saturation rx
 
I've been using this feature and noticed I'm often getting 99% instead of 100% for a line that seems to work fine.
Does anyone know where this 1% comes from.

I can only assume the WebIF gets its info in the same manner and it also "says" this line is fully up and running.
It's why I made the test "less critical"
 
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.