Skip to content

Instantly share code, notes, and snippets.

@jstanley23
Last active May 16, 2019 14:51
Show Gist options
  • Save jstanley23/e7e9beea0018d32abf707d5e7cd088cc to your computer and use it in GitHub Desktop.
Save jstanley23/e7e9beea0018d32abf707d5e7cd088cc to your computer and use it in GitHub Desktop.
/bin/bash -c 'iface_name="access"; host="192.168.23.202"; snmp_cmd="snmpwalk -v 2c -c public -On $${host}"; sipifaceoid="1.3.6.1.4.1.9148.3.15.1.2.1.1"; sipratetableoid="1.3.6.1.4.1.9148.3.15.1.2.2.1"; output="OK|%s\n"; iface_index=$$($${snmp_cmd} $${sipifaceoid} | grep -oE "[0-9]+\s.*\"$${iface_name}\"$$" | awk -F" " "{print $$1}"); table_data="$$($${snmp_cmd} $${sipratetableoid})"; datasources=""; regex="([0-9]+)\.([0-9]+)\.([0-9]+) =.*([0-9]+)$$"; while read -r table_row; do if [[ $$table_row =~ $$regex ]]; then traffic_type_id=$${BASH_REMATCH[1]}; iface=$${BASH_REMATCH[2]}; sip_method_id=$${BASH_REMATCH[3]}; value=$${BASH_REMATCH[4]}; if [[ $${iface} -eq $${iface_index} ]]; then case $${sip_method_id} in 1) sip_method="other";; 2) sip_method="invite";; 3) sip_method="ack";; 4) sip_method="bye";; 5) sip_method="register";; 6) sip_method="cancel";; 7) sip_method="prack";; 8) sip_method="options";; 9) sip_method="info";; 10) sip_method="subscribe";; 11) sip_method="notify";; 12) sip_method="refer";; 13) sip_method="update";; 14) sip_method="message";; 15) sip_method="publish";; *) continue;; esac; case $${traffic_type_id} in 5) traffic_type="msg_rcvd";; 6) traffic_type="msg_sent";; 7) traffic_type="req_rcvd";; 8) traffic_type="req_sent";; 9) traffic_type="rsp_rcvd";; 10) traffic_type="rsp_sent";; *) continue;; esac; datasources="$${datasources} $${iface_name}_$${sip_method}_$${traffic_type}=$${value}"; fi; fi; done <<< "$$table_data"; printf "$${output}" "$${datasources}"'
@jstanley23
Copy link
Author

jstanley23 commented May 16, 2019

CLI testing:
(zenoss) [zenoss@05fd09092abe ~]$ /bin/bash -c 'iface_name="access"; host="192.168.23.202"; snmp_cmd="snmpwalk -v 2c -c public -On ${host}"; sipifaceoid="1.3.6.1.4.1.9148.3.15.1.2.1.1"; sipratetableoid="1.3.6.1.4.1.9148.3.15.1.2.2.1"; output="OK|%s\n"; iface_index=$(${snmp_cmd} ${sipifaceoid} | grep -oE "[0-9]+\s.*\"${iface_name}\"$" | awk -F" " "{print $1}"); table_data="$(${snmp_cmd} ${sipratetableoid})"; datasources=""; regex="([0-9]+)\.([0-9]+)\.([0-9]+) =.*([0-9]+)$"; while read -r table_row; do if [[ $table_row =~ $regex ]]; then traffic_type_id=${BASH_REMATCH[1]}; iface=${BASH_REMATCH[2]}; sip_method_id=${BASH_REMATCH[3]}; value=${BASH_REMATCH[4]}; if [[ ${iface} -eq ${iface_index} ]]; then case ${sip_method_id} in 1) sip_method="other";; 2) sip_method="invite";; 3) sip_method="ack";; 4) sip_method="bye";; 5) sip_method="register";; 6) sip_method="cancel";; 7) sip_method="prack";; 8) sip_method="options";; 9) sip_method="info";; 10) sip_method="subscribe";; 11) sip_method="notify";; 12) sip_method="refer";; 13) sip_method="update";; 14) sip_method="message";; 15) sip_method="publish";; *) continue;; esac; case ${traffic_type_id} in 5) traffic_type="msg_rcvd";; 6) traffic_type="msg_sent";; 7) traffic_type="req_rcvd";; 8) traffic_type="req_sent";; 9) traffic_type="rsp_rcvd";; 10) traffic_type="rsp_sent";; *) continue;; esac; datasources="${datasources} ${iface_name}_${sip_method}_${traffic_type}=${value}"; fi; fi; done <<< "$table_data"; printf "${output}" "${datasources}"' Timeout: No Response from 192.168.23.202 Timeout: No Response from 192.168.23.202 OK| (zenoss) [zenoss@05fd09092abe ~]$

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment