Skip to content

Instantly share code, notes, and snippets.

@tonusoo
Last active March 26, 2024 12:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tonusoo/2f95c1d377bf658dcf5c8b7c9dba5f57 to your computer and use it in GitHub Desktop.
Save tonusoo/2f95c1d377bf658dcf5c8b7c9dba5f57 to your computer and use it in GitHub Desktop.
version 1.0;
ns junos = "http://xml.juniper.net/junos/*/junos";
ns xnm = "http://xml.juniper.net/xnm/1.1/xnm";
ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0";
ns dyn = "http://exslt.org/dynamic";
ns snmp extension = "http://exslt.org/functions";
template find-alarm($alarm_severity) {
var $con = jcs:open();
var $system_alarms = jcs:execute($con, "get-system-alarm-information");
var $chassis_alarms = jcs:execute($con, "get-alarm-information");
/*
* jnxRedAlarmState and jnxYellowAlarmState from JUNIPER-ALARM-MIB
* return an integer 1(other), 2(off) or 3(on).
*/
if (not(($system_alarms | $chassis_alarms)/alarm-summary)) {
expr jcs:syslog("external.error", $script _ ": ", "mgd or RPC error");
<snmp-value> "1";
}
else if (($system_alarms | $chassis_alarms)/alarm-detail/alarm-class == $alarm_severity) {
<snmp-value> "3";
}
else {
<snmp-value> "2";
}
}
template find-alarm-count( $alarm_severity ) {
var $con = jcs:open();
var $system_alarms = jcs:execute($con, "get-system-alarm-information");
var $chassis_alarms = jcs:execute($con, "get-alarm-information");
if (not(($system_alarms | $chassis_alarms)/alarm-summary)) {
expr jcs:syslog("external.error", $script _ ": ", "mgd or RPC error");
<snmp-value> "999";
}
else {
var $alarm_count = count(($system_alarms | $chassis_alarms)/alarm-detail[alarm-class == $alarm_severity]);
<snmp-value> $alarm_count;
}
}
match / {
var $snmp-action = snmp-script-input/snmp-action;
var $snmp-oid = snmp-script-input/snmp-oid;
/* expr jcs:syslog("external.notice", $script _ ": ", "snmp-action = ", $snmp-action, " snmp-oid = ", $snmp-oid); */
if ($snmp-action == "get") {
if($snmp-oid == ".1.3.6.1.4.1.2636.3.4.2.2.1.0") {
<snmp-script-results> {
<snmp-oid> $snmp-oid;
<snmp-type> "Integer32";
call find-alarm($alarm_severity = "Minor");
}
}
else if($snmp-oid == ".1.3.6.1.4.1.2636.3.4.2.3.1.0") {
<snmp-script-results> {
<snmp-oid> $snmp-oid;
<snmp-type> "Integer32";
call find-alarm($alarm_severity = "Major");
}
}
else if($snmp-oid == ".1.3.6.1.4.1.2636.3.4.2.2.2.0") {
<snmp-script-results> {
<snmp-oid> $snmp-oid;
<snmp-type> "Gauge32";
call find-alarm-count($alarm_severity = "Minor");
}
}
else if($snmp-oid == ".1.3.6.1.4.1.2636.3.4.2.3.2.0") {
<snmp-script-results> {
<snmp-oid> $snmp-oid;
<snmp-type> "Gauge32";
call find-alarm-count($alarm_severity = "Major");
}
}
}
else if ($snmp-action == "get-next") {
if($snmp-oid == ".1.3.6.1.4.1.2636.3.4.2.2.1") {
<snmp-script-results> {
<snmp-oid> $snmp-oid _ ".0";
<snmp-type> "Integer32";
call find-alarm($alarm_severity = "Minor");
}
}
else if($snmp-oid == ".1.3.6.1.4.1.2636.3.4.2.3.1") {
<snmp-script-results> {
<snmp-oid> $snmp-oid _ ".0";
<snmp-type> "Integer32";
call find-alarm($alarm_severity = "Major");
}
}
else if($snmp-oid == ".1.3.6.1.4.1.2636.3.4.2.2.2") {
<snmp-script-results> {
<snmp-oid> $snmp-oid _ ".0";
<snmp-type> "Gauge32";
call find-alarm-count($alarm_severity = "Minor");
}
}
else if($snmp-oid == ".1.3.6.1.4.1.2636.3.4.2.3.2") {
<snmp-script-results> {
<snmp-oid> $snmp-oid _ ".0";
<snmp-type> "Gauge32";
call find-alarm-count($alarm_severity = "Major");
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment