You know that opensips -x mi dlg_list will produce a lot of JSON output, what if i want to get only dialogs with state = 4 ?
There are beautiful tool like “jq” present in unix. (documentation)
For example output from command “opensips-cli -x mi profile_get_size profile=calls”:
{ "Profile": { "name": "calls", "value": null, "count": 15, "shared": "no", "replicated": "no" } }
if i want to get only count number, i can use that:
opensips-cli -x mi profile_get_size profile=calls | jq '.Profile.count'
And output will be
15
It may be usefull for example when you are using zabbix monitoring. Some useful commands:
//this will output count of dialogs in state of 4 (established) opensips-cli -x mi dlg_list | jq '.Dialogs[] | select(.state == 4) | .state' | wc -l //this will count show dialogs have "from = anyfrom@domain.com" and in starting state opensips-cli -x mi dlg_list | jq '.Dialogs[] | select(.from_uri == "sip:anyfrom@domain.com") | select(.state < 4) | .state' | wc -l //if you remove "| wc -l" you will see full JSON info about dialogs you requested //so you can take info about dialogs you want with easy way.
For regexp and tring matches (like i want to see only linphones) you may use this construction:
opensips-cli -x mi ul_dump | jq ‘.Domains[].AORs[].Contacts[] | select(.”User-agent”|test(“Linphone”))’
Leave a Reply