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

Datasource zencommand -v10 output:

2019-05-16 14:49:57,213 DEBUG zen.runner: Running command(s) locally
2019-05-16 14:49:57,213 DEBUG zen.collector.scheduler: Task test1 300 Local changing state from CONNECTING to FETCH_DATA
2019-05-16 14:49:57,213 INFO zen.zencommand: Datasource test/test command: /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}"'
2019-05-16 14:49:57,213 DEBUG zen.runner: Running /bin/bash
2019-05-16 14:50:07,080 DEBUG zen.publisher: response was: {"type":"OK","value":""}2019-05-16 14:50:09,329 DEBUG zen.runner: Datasource: test Received exit code: 0 Output:
'OK|\n'
Standard Error:
'Timeout: No Response from 192.168.23.202\nTimeout: No Response from 192.168.23.202\n'
2019-05-16 14:50:09,329 DEBUG zen.zencommand: Process test/test stopped (0), 12.11 seconds elapsed

@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